01 MySQL 8:数据库账户管理

在这里插入图片描述

1. 远程登录MySQL

# 语法:mysql -h [目标IP/主机名] -P[端口号] -u[用户名] -p[密码]  
 mysql -h192.168.85.131 -P3306 -umayan -p

2. 查询账户

2.1. 查看用户信息

MySQL 数据库的 用户信息 存放在 user 表( MySQL 服务下存在系统自带的 mysql 数据库)。

use mysql ;
show tables;

在这里插入图片描述
在这里插入图片描述

2.2. 查看 user 表结构

desc user;
# 或者
describe user;

在这里插入图片描述
在这里插入图片描述

2.3. 查看密码信息

密码信息: 经过加密后的密码信息

select user,host,authentication_string from user;

在这里插入图片描述

3. 新建账户

📣📣注意: MySQL 8 版本中新增了一个 system_user 帐户类型。由于 root 用户没有 SYSTEM_USER 权限。然后对其他账户进行操作时,有可能会出现如下错误。
在这里插入图片描述
如果出现上图错误,则给 root 账户添加 system_user 权限即可:

grant system_user on *.* to 'root';

3.1. 新建登录账户

语法: CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
参数说明:

参数简述
username创建的用户名
localhost指定该用户在哪个主机上可以登陆,如果是本地用户可用 localhost ,如果想让该用户可以从任意远程主机登陆,可以使用通配符 %
password该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器。
# 新建chnmayan账户,密码为123456.允许登录的主机%
CREATE USER 'chnmayan'@'%' IDENTIFIED BY '123456';

在这里插入图片描述

4. 修改账户

# 语法:RENAME USER '[旧的用户名]'@'[旧的主机地址]' TO '[新的用户名]'@'[新的主机地址]';
RENAME USER 'chnmayan'@'%' TO 'mayan'@'%';

在这里插入图片描述

5. 删除账户

# 语法:
DROP USER '[用户名]'@'[登录主机地址]';

6. 查询当前登录账户

# 语法:
select user();

在这里插入图片描述

7. 修改账户密码

7.1. 普通账户修改自身

MySQL 8 版本相对于旧版本有些不同之处。普通账户修改自身登录密码的时候用到 REPLACE 关键字,进行旧密码验证。

# 语法:
ALTER USER USER() IDENTIFIED BY '[新密码]' REPLACE '[旧密码]';
# 或者
ALTER USER '[用户名]'@'[登录主机地址]' IDENTIFIED BY '[新密码]' REPLACE '[旧密码]';

7.2. root账户修改自身

ALTER USER USER() IDENTIFIED BY '[新密码]';
# 或者
ALTER USER '[用户名]'@'[登录主机地址]' IDENTIFIED BY '[新密码]';

7.3. root账户修改其他账户密码

ALTER USER '[用户名]'@'[登录主机地址]' IDENTIFIED BY '[新密码]';

root 修改密码的时候不需要 REPLACE 关键字校验旧密码。REPLACE 关键字只适用于普通账户修改自身密码 的时候。

7.4. 指定密码的加密方式

MySQL 8 中是可以指定密码的加密方式(默认:caching_sha2_password)。
旧版本的加密方式: mysql_native_password
新版本的加密方式: caching_sha2_password

ALTER USER 'chnmayan'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

8. root账户密码忘记

8.1. 关闭mysql服务

systemctl stop mysqld.service

8.2. 启动mysql服务

mysqld  --user=root  --skip-grant-tables

8.3. 查看mysql服务状态

systemctl status mysqld

8.4. 登录MySQL数据库

mysql -hlocalhost -P3306 -uroot  -p

8.5. 登录后查看mysql.user表

SELECT host, user, plugin, authentication_string FROM user;

8.6. 删除root用户

delete from mysql.user where user=’root’;
flush privileges;
commit;

8.7. 新建root用户

create user root;

8.8. 给root用户设置密码

alter user 'root'@'%' identified by '新密码';

8.9. 给root用户赋权

grant all on *.* to 'root'@'%';

8.10. 更新root用户给其他用户赋权的权限

此时, root 账户给其他用户进行赋权操作,可能会报错:显示 root 用户没有授权权限。
mysql.user 表里面的 Grant_priv 字段的值为 N ,把这个字段的值更新为 Y 即可。

update mysql.user set Grant_priv='Y' where user='root';

8.11. 刷新权限

FLUSH PRIVILEGES;

9.账户权限

9.1. 查询权限

9.1.1. 查询当前登录账户

SHOW GRANTS;

在这里插入图片描述

9.1.2. 查看其他账户

# 语法:SHOW GRANTS FOR '[用户名]'@'[登录主机地址]';
SHOW GRANTS FOR 'chnmayan'@'%';

9.2. 赋予权限

使用足够权限的用户(通常是 root 用户)登录 MySQL 服务器。
GRANT 语句为用户分配权限。权限可以精确到特定的数据库、表或操作类型(如SELECTINSERTUPDATEDELETE等)。

# 语法:
GRANT [权限列表] ON [数据库名.表名] TO '[用户名]'@'[登录主机地址]';

9.2.1. 赋权某账户所有权限

给用户 chnmayan 赋予权限,使其能从任意主机( %)访问并操作所有数据库的所有权限。

GRANT ALL PRIVILEGES ON *.* TO 'chnmayan'@'%';

9.2.2. 赋权某账户指定数据库的所有权限

给用户 chnmayan 赋予权限,使其能从任意主机( %)访问并操作指定数据库(比如 db1 )的全部权限。

GRANT ALL PRIVILEGES ON db1.* TO 'chnmayan'@'%';

9.2.3. 赋权某账户指定数据库的指定权限

给用户 chnmayan 赋予权限,使其能从任意主机( %)访问并操作指定数据库(比如 db1 )的读权限。

GRANT SELECT ON db1.* TO 'chnmayan'@'%';

9.2.4. 刷新权限

分配完权限后,通常需要执行 FLUSH PRIVILEGES 来确保权限立即生效。

FLUSH PRIVILEGES;

9.2.5. 补充

privileges: 用户的操作权限,如 SELECTINSERTUPDATECREATE 等,如果要授予所有的权限则使用 ALL

拓展:

权限权限说明权限级别
CREATE创建数据库、表或索引的权限数据库、表或索引
DROP删除数据库或表的权限数据库或表
GRANT OPTION赋予权限选项数据库或表
REFERENCES引用权限数据库或表
ALTER更改表的权限数据表
DELETE删除表数据的权限数据表
INDEX操作索引的权限数据表
INSERT添加表数据的权限数据表
SELECT查询表数据的权限数据表
UPDATE更新表数据的权限数据表
CREATE VIEW创建视图的权限视图
SHOW VIEW查看视图的权限视图
ALTER ROUTINE更改存储过程的权限存储过程
CREATE ROUTINE创建存储过程的权限存储过程
EXECUTE执行存储过程权限存储过程
FILE服务器主机文件的访问权限文件管理
CREATE TEMPORARY TABLES创建临时表的权限服务器管理
LOCK TABLES锁表的权限服务器管理
CREATE USER创建用户的权限服务器管理
RELOAD执行 flush privileges, refresh, reload 等刷新命令的权限服务器管理
PROCESS查看进程的权限服务器管理
REPLICATION CLIENT查看主从服务器状态的权限服务器管理
REPLICATION SLAVE主从复制的权限服务器管理
SHOW DATABASES查看数据库的权限服务器管理
SHUTDOWN关闭数据库的权限服务器管理
SUPER超级权限服务器管理
ALL [PRIVILEGES]所有权限
USAGE没有任何权限

9.3. 撤销权限

使用 REVOKE 语句撤销用户的权限。撤销权限的方式与授予权限相似,你需要指定要撤销权限的用户、权限类型以及作用的对象(数据库、表等)。

# 语法:revoke [权限列表/ALL] on 库名.表名 from '[用户名]'@'[登录主机地址]';

9.3.1. 撤销某用户全部权限

REVOKE ALL PRIVILEGES ON *.* FROM 'chnmayan'@'%';

9.3.2. 撤销某用户指定数据库全部权限

REVOKE ALL PRIVILEGES ON db1.* FROM 'chnmayan'@'%';

9.3.3. 撤销某用户指定数据库的指定权限

REVOKE SELECT PRIVILEGES ON db1.* FROM 'chnmayan'@'%';

9.3.4. 刷新权限

撤销完权限后,通常需要执行 FLUSH PRIVILEGES 来确保权限立即生效。

FLUSH PRIVILEGES;

本文隶属于 【个人专栏】02 MySQL📋📋📋
到这里 01 MySQL 8:数据库账户管理 就结束了!!!🎉🎉🎉
欢迎小伙伴们学习和指正!!!😊😊😊
祝大家学习和工作一切顺利!!!😎😎😎

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值