首页 > 数据库 >MySQL数据库管理补充

MySQL数据库管理补充

时间:2024-06-17 20:56:53浏览次数:22  
标签:用户名 补充 数据库 用户 密码 student MySQL table

目录

一.数据表高级操作

1.克隆表

2.清空表

3.创建临时表

4.创建外键约束

外键的定义

主键表和外键表的理解

4.1.创建主从表

4.2.主从表中插入数据

4.3.主从表中删除数据

4.4.删除外检约束

二.数据库用户管理

1.新建用户

2.查看用户信息

3.重命名用户

4.删除用户

5.修改当前登录用户密码

6.修改其他用户密码

7.忘记root密码的解决办法

三.数据库用户授权

1.授予权限

2.查看权限

3.撤销权限


一.数据表高级操作

1.克隆表

方法一:
create table 新表名 like 旧表名;				#克隆表结构
insert into 新表名 select * from 旧表名;     #克隆表数据
 
#此方法能保证 新表的表结构、表数据 跟旧表都是一致的
 
方法二:
CREATE TABLE 新表名 (SELECT * from 旧表名);
 
#此方法创建的新表的表数据和旧表是一样的,但可能会出现新表的表结构和旧表的不一致
 
show create table test02\G					#获取数据表的表结构、索引等信息
SELECT * from test02;

2.清空表

方法一:
delete from xy102;
#DELETE清空表后,返回的结果内有删除的记录条目;DELETE工作时是一行一行的删除记录数据的;如果表中有自增长字段,使用DELETE FROM 删除所有记录后,再次新添加的记录会从原来最大的记录 ID 后面继续自增写入记录。
 
方法二:
truncate table xy102;
#TRUNCATE 清空表后,没有返回被删除的条目;TRUNCATE 工作时是将表结构按原样重新建立,因此在速度上 TRUNCATE 会比 DELETE 清空表快;使用 TRUNCATE TABLE 清空表内数据后,ID 会从 1 开始重新记录。

3.创建临时表

临时表创建成功之后,使用SHOW TABLES命令是看不到创建的临时表的,临时表会在连接退出

后被销毁。 如果在退出连接之前,也可以可执行增删改查等操作,比如使用 DROP TABLE 语句

手动直接删除临时表

CREATE TEMPORARY TABLE 表名 (字段1 数据类型,字段2 数据类型[,...][,PRIMARY KEY (主键名)]);

4.创建外键约束

保证数据的完整性和一致性

外键的定义

如果同一个属性字段X在表一中是主键,而在表二中不是主键,则字段X称为表二的外键。

主键表和外键表的理解

  • 以公共关键字作主键的表为主键表(父表、主表)

  • 以公共关键字作外键的表为外键表(从表、外表)

注意:与外键关联的主表的字段必须设置为主键。要求从表不能是临时表,主从表的字段具备相同

的数据类型、字符长度和约束

4.1.创建主从表

#创建主表 profession
create table class (name varchar(10), price int);
 
#创建从表 student
create table student (id int, username varchar(20), ageint, sex char(2), classname varchar(10));
 
#为主表profession添加一个主键约束,主键名建议以“PK_”开头,可以省略不写,系统会自动分配一个名称
alter table class add primary key (name);
 
#为从表student表添加外键,并将class表的name字段和 student表的classname字段建立外键关联。外键名建议以“FK_”开头,可以省略不写,系统会自动分配一个名称
alter table student add foreign key (classname) references class(name);
 
desc class;                  #查看主键表的表结构
desc student;                #查看外键表的表结构
show create table student;   #可以查看表结构的详细信息

4.2.主从表中插入数据

#插入新的数据记录时,要先主表再从表
insert into class values('云计算', 24000);
insert into class values('JAVA', 25000);
insert into student values(1, 'zhangsan',  18, '男', 'JAVA');

4.3.主从表中删除数据

#删数数据记录时,要先从表再主表,也就是说删除主键表的记录时必须先删除其他与之关联的表中的记录。
delete from student where id=1;
delete from class where name='JAVA';

4.4.删除外检约束

#查看和删除外键约束
show create table student;
desc student;
alter table student drop foreign key FK_pro;
alter table student drop key proid;

二.数据库用户管理

1.新建用户

create user '用户名'@'来源地址' [identified by [password] '密码'];
'用户名':指定将创建的用户名
'来源地址':指定新创建的用户可在哪些主机上登录,可使用IP地址、网段、主机名的形式,本地用户可用localhost,允许任意主机登录可用通配符%
'密码':若使用明文密码,直接输入'密码',插入到数据库时由Mysql自动加密;
           若使用加密密码,需要先使用SELECT PASSWORD('密码'); 获取密文,再在语句中添加 PASSWORD '密文';
           若省略“IDENTIFIED BY”部分,则用户的密码将为空(不建议使用)

2.查看用户信息

#创建后的用户保存在 mysql 数据库的 user 表里
USE mysql;
SELECT User,authentication_string,Host from user;
#查看当前登录用户
select user();

3.重命名用户

RENAME USER '用户名'@'来源地址' TO '新用户名'@'来源地址';

4.删除用户

DROP USER '用户名'@'来源地址';

5.修改当前登录用户密码

方法1
SET PASSWORD = PASSWORD('abc123');
方法2
ALTER USER 'root'@'localhost' IDENTIFIED BY 'abc123';

6.修改其他用户密码

SET PASSWORD FOR 'user1'@'localhost' = PASSWORD('abc123');

7.忘记root密码的解决办法

方法1
修改 /etc/my.cnf 配置文件,不使用密码直接登录到 mysql
vim /etc/my.cnf
[mysqld]
skip-grant-tables					#添加,使登录mysql不使用授权表

systemctl restart mysqld

mysql								#直接登录

方法2
使用 update 修改 root 密码,刷新数据库
UPDATE mysql.user SET AUTHENTICATION_STRING = PASSWORD('abc123') where user='root';

FLUSH PRIVILEGES;
quit

mysql -u root -pabc123

注意:最后再把 /etc/my.cnf 配置文件里的 skip-grant-tables 删除,并重启 mysql 服务

三.数据库用户授权

1.授予权限

GRANT语句:专门用来设置数据库用户的访问权限。当指定的用户名不存在时,GRANT语句将会创建新的用户;当指定的用户名存在时, GRANT 语句用于修改用户信息。
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'来源地址' [IDENTIFIED BY '密码'];
#权限列表:用于列出授权使用的各种数据库操作,以逗号进行分隔,如“select,insert,update”。使用“all”表示所有权限,可授权执行任何操作

#数据库名.表名:用于指定授权操作的数据库和表的名称,其中可以使用通配符“*”。例如,使用“mydb.*”表示授权操作的对象为 mydb数据库中的所有表

#'用户名@来源地址':用于指定用户名称和允许访问的客户机地址,即谁能连接、能从哪里连接。来源地址可以是域名、IP地址,还可以使用“%”通配符,表示某个区域或网段内的所有地址,如“%.mydb.com”、“192.168.80.%”等

#IDENTIFIED BY:用于设置用户连接数据库时所使用的密码字符串。在新建用户时,若省略“IDENTIFIED BY”部分,则用户的密码将为空

2.查看权限

SHOW GRANTS FOR 用户名@来源地址;

3.撤销权限

REVOKE 权限列表 ON 数据库名.表名 FROM 用户名@来源地址;

标签:用户名,补充,数据库,用户,密码,student,MySQL,table
From: https://blog.csdn.net/F12138X/article/details/139721267

相关文章

  • 基于springboot的南门桥社区疫情防疫系统-48138(免费领源码+数据库)可做计算机毕业设计J
    Springboot南门桥社区疫情防疫系统的设计与实现摘 要信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对南门桥社区疫情防疫系统等问题,对南门桥社区......
  • NginxProxyManager 数据库迁移记录
    原因家里服务器的NginxMangerProxy使用的是SQLite作为数据库的。虽然数据不是很重要,但是丢了也是挺蛋疼的。考虑改为MySQL作为数据库,然后使用定时备份的策略来做数据库多备份。升级步骤1.保存sqlite的database文件NginxProxyManager是使用Portainer拉起的容器,可......
  • 数据库原理(关系数据库规范化理论)——(4)
    一、关系模式规范化的必要性1.关系可能出现的问题数据冗余大;插入异常;删除异常;更新异常;2.关系模式应满足的基本要求元组的每个分量必须是不可分割的数据项;数据库中的数据冗余应尽可能少;不要出现插入异常;不要出现删除异常;不要出现更新异常;数据库设计应考虑查询要求,数据组织要......
  • Javaweb实现简易记事簿 jdbc实现Java连接数据库
    //相关代码packageUserAct;importjakarta.servlet.;importjakarta.servlet.annotation.WebServlet;importjakarta.servlet.http.;importjava.io.;importjava.sql.;//登出@WebServlet("/UserAct.DeleteEvent")publicclassDeleteEventimplementsServlet{......
  • mysqlconf
    [mysqld]#max_connections=20000#数据传输可能出现大表中断与这个有关系port=13306default-authentication-plugin=mysql_native_password#datadir=/opt/data/mysql/mysql#socket=/opt/data/mysql/mysql/mysql.sockdatadir=/opt/data/mysql/mysql/mysqlsocket=/o......
  • 【数据库】数据恢复
    日志:先记日志后写数据库记日志----(出错)-----写数据库:数据库还没有被修改,数据库还是好的记日志-----写数据库----(出错):数据库内的文件可能有问题,但日志是好的,可以根据日志恢复数据库如果反过来先写数据库再写日志,那么若写数据库----(出错)----记日志,这种情况数据库中数......
  • MySQL触发器基本结构
    1、修改分隔符符号delimiiter$$可以修改成$$//都行2、创建触发器函数名称createtrigger函数名3、什么样的操作触发,操作哪个表after:···之后触发before:···之前触发insert:插入被触发update:修改被触发delete:删除被触发on表名实例:在user表被添加信息后触发......
  • 如何解决c++使用mysql数据库读取中文输出时乱码问题
    使用vs写c++输出数据库中文时出现乱码设置utf-8还是不行这是数据库的内容这是输出:在网上找有说改成utf-8的格式,加入这样一句:mysql_query(conn,"setnamesutf8");效果就是这样:发现错误依旧,询问群友后修改,需要在连接数据库的函数中加入如下一句:mysql_query(conn,"set......
  • MYSQL查询语句报1 of ORDER BY clause is not in SELECT list
    我的语句如下:SELECTDISTINCT r.id, r.device_model_id, r.device_model_name, r.alarm_type_id, r.alarm_type_name, r.alarm_level, r.filter_condition, r.filter_condition_value, r.offline_tag, p.param_data_id, p.parmsFROM alarm_ruler, alarm_rule_pa......
  • MySQL 5.7 安装教程(Win 10)
    转自:https://www.cnblogs.com/swjian/p/11907600.htmlMySQL5.7下载官网下载(不推荐使用):https://dev.mysql.com/downloads/mysql/清华镜像站下载(推荐):https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-5.7/mysql-5.7.27-winx64.zipMySQL5.7解压将下载完的zi......