低版本兼容问题解决方法
MySQL 8.0默认认证插件为caching_sha2_password
MySQL 5.7及之前版本认证插件是mysql_native_password
修改配置文件:/etc/my.cnf.d/
添加用户认证登录插件:
default-authentication-plugin=mysql_native_password
查看用户(user)权限
# 查看MySQL用户user表: use mysql; show tables; select * from user\G; # 当前登录用户权限 SHOW GRANTS; # 查看所有用户及主机 SELECT host, user FROM mysql.user; # 查看特定用户的权限 SHOW GRANTS FOR '用户名'@'主机';
host值介绍
host值就是用来限制“从哪个地址可以登录”的,可以理解为登录许可的“地址白名单”
创建用户及密码
示例:
CREATE USER 用户名@地址 IDENTIFIED BY '密码';
# localhost只允许本机登录
CREATE USER '用户名'@'localhost' IDENTIFIED BY '密码';
# %代表所有地址都可以登录
create user '用户'@'%' identified by '密码';
# 192.168.8.% 允许192.168.8.x网段的所有主机登录
create user '用户'@'192.168.8.%' identified by '密码';
# 删除用户
drop user '用户'@'localhost';
drop user '用户'@'%';
# 从 MySQL 的系统权限表中删除用户
delete from mysql.user where user='用户名' and host='地址';修改用户名
# MySQL 5.x时,使用如下语法:
RENAME USER 用户名 TO 用户名;
# MySQL8.x时,使用如下语法:
rename user '用户名'@'localhost' to '用户名'@'localhost';
rename user '用户名'@'%' to '用户名'@'%';修改密码
# 修改MySQL5.x时,使用如下语法:
## root修改自己的密码
set password = password('密码');
# 修改其他用户的密码
SET PASSWORD FOR '用户'@'%' = PASSWORD ( '12345678' );
# MySQL8.x,修改密码
ALTER USER '用户'@'%' IDENTIFIED BY '密码';
ALTER USER '用户'@'localhost' IDENTIFIED BY '密码';
# 让 MySQL 重新从 mysql 系统库的权限表中读取所有用户权限,并立即生效。
FLUSH PRIVILEGES;给用户设置权限
all 除了授权之外的所有权限
select 查询表内容的权限
update 修改表内容权限
insert 在表中添加内容的权限
delete 删除表中内容的权限
权限范围的四种写法
示例:
grant 权限列表 on 库.表 to '用户'@'地址';
# 给用户添加insert,update,select权限,并作用到所有库.所有表
grant insert,update,select on *.* to '用户'@'地址';
# 创建一个名为 tomdb 的数据库
create database tomdb;
# 给tomdb数据库及tomdb库里面所有的表除了授权之外的所有权限,其他库无权限
GRANT ALL ON tomdb.* TO '用户'@'地址';
# 给所有数据库及表除了授权之外的所有权限
GRANT ALL ON *.* TO '用户'@'地址';
# 给所有数据库及表所有权限包括授权的权限
GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION;
# 给特定网段用户 授权查、修、增权限
grant select,update,insert ON *.* to '用户'@'192.168.8.%';
# 撤销权限
revoke 权限列表 on 库.表 from '用户'@'地址';
# 撤销 用户 的所有权限
revoke all on *.* from '用户'@'地址';
# 刷新权限
FLUSH PRIVILEGES;
原创
MySQL用户权限管理
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
评论交流
欢迎留下你的想法