常用的用户管理SQL语句

[root@localhost ~]# /program/mysql/bin/mysql --socket=/dev/shm/mysql.sock -u root -p
 
mysql> SELECT VERSION() AS `version`; -- 查看当前MySQL版本号
+---------+
| version |
+---------+
| 8.1.0   |
+---------+
 
mysql> CREATE USER `ZhangSan`@`%` IDENTIFIED WITH caching_sha2_password BY '******' PASSWORD EXPIRE NEVER;
-- 创建一个用户名为ZhangSan的用户,密码为******,其中密码加密方式为caching_sha2_password,密码过期策略为永不过期。
 
mysql> FLUSH PRIVILEGES;
-- 重新加载权限信息,使上面的创建用户操作生效。
 
mysql> GRANT ALL PRIVILEGES ON `test_db`.* TO `ZhangSan`@`%`;
-- 授权用户名为ZhangSan的用户管理test_db数据库,其中*表示对该数据库拥有全部操作权限。
 
mysql> FLUSH PRIVILEGES;
-- 重新加载权限信息,使上面的授权用户管理数据库操作生效。
 
mysql> ALTER USER `ZhangSan`@`%` IDENTIFIED WITH caching_sha2_password BY '@@@@@@' PASSWORD EXPIRE NEVER;
-- 修改用户ZhangSan的密码,新密码为@@@@@@,其中密码加密方式为caching_sha2_password,密码过期策略为永不过期。
 
mysql> FLUSH PRIVILEGES;
-- 重新加载权限信息,使上面的修改用户密码操作生效。
 
mysql> DROP USER `ZhangSan`@`%`;
-- 删除指定用户。
 
mysql> FLUSH PRIVILEGES;
-- 重新加载权限信息,使上面的删除用户操作生效。
 
mysql> EXIT;
Bye
[root@localhost ~]#
说明①:上面的`ZhangSan`@`%`表示用户ZhangSan可以使用任意IP地址连接数据库,若要限制用户只能使用指定IP地址连接数据库只要将%替换为IP地址即可,若要限制用户只能本地连接数据库只要将%替换为::1即可,值得一提的是::1和localhost一样都不走网卡。
说明②:在整个操作中`ZhangSan`@`%`里的%必须保持统一,不能创建用户时使用%,但是授权管理数据库时又使用::1。事实上,ZhangSan和%分别是mysql.user表的User字段值和Host字段值,而这两个字段是联合主键,也就是说`ZhangSan`@`%`和`ZhangSan`@`::1`是两条记录,这也是在对用户进行任何修改时必须指定Host的根本原因。

Copyright © 2024 码农人生. All Rights Reserved