原文网址:MySQL8--用户与权限管理_IT利刃出鞘的博客-CSDN博客
简介
说明
本文介绍MySQL8的用户与权限的管理,包括:用户的创建与删除、授权与撤销权限等。
为什么要管理用户与权限?
目的是保证数据库的安全性,只授予能满足需要的最小权限,防止用户干坏事,比如:删除了表、清空了数据库等。
Java星球:way2j.com
注意
以下所有命令都必须先用mysql命令连接到数据库:
mysql -uroot -p
回车后会提示输入密码。
查看用户
SELECT host, user, plugin FROM mysql.user;
红色箭头:主管理员
黄色箭头:mysql系统自带的,不要动它。
蓝色箭头:自己创建的用户,这个是我以前创建的
创建用户
CREATE USER '#userName'@'#host' IDENTIFIED BY '#passWord';
FLUSH PRIVILEGES;
#userName 代表你要创建的此数据库的新用户账号
#host 代表允许访问的主机。如果host_name省略,默认为%。详情如下
- %代表通配所有host地址权限(可远程访问)
- localhost为本地权限(不可远程访问)
- 指定某个ip访问权限,如10.138.106.102
#passWord 用户的密码
示例
本处要创建的用户是testUser,密码是111222,并且可远程访问
CREATE USER 'testUser'@'%' IDENTIFIED BY '111222';
FLUSH PRIVILEGES;
执行完后查看结果:
删除用户
法1:删除用户(指定主机)
DROP USER '用户名'@'主机名';
例如:
DROP USER 'testUser'@'%';
法2:删除用户
默认删除host为%的用户
DROP USER '用户名';
法3:DELETE语句删除用户
DELETE FROM mysql.user WHERE Host='主机名' AND User='用户名';
例如:
DELETE FROM mysql.user WHERE Host='%' AND User='testUser';
修改密码
ALTER USER '用户名'@'主机名' IDENTIFIED BY '新密码';
例如:
CREATE USER 'testUser'@'%' IDENTIFIED BY '111222';
查看用户权限
说明
SHOW GRANTS FOR '#userName'@'#host';
#userName 代表用户名
#host 代表允许访问的主机,如果host_name省略,默认为%。详情如下
- %代表通配所有host地址权限(可远程访问)
- localhost为本地权限(不可远程访问)
- 指定特殊Ip访问权限 如10.138.106.102
示例
MySQL所有权限见:此文
给用户授权
示例
例1:给adminUser用户赋予所有权限
GRANT ALL ON *.* TO 'adminUser'@'%';
例2:给testUser用户赋予所有库表的增删改查权限
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, INDEX, CREATE VIEW, SHOW VIEW *.* TO 'testUser'@'%';
最后都要刷新权限
FLUSH PRIVILEGES;
详解
GRANT #auth ON #databaseName.#tableName TO '#userName'@'#host';
#auth 代表权限,例如
- ALL 全部权限
- SELECT 查询权限(单个)
- SELECT,INSERT,UPDATE,DELETE 增删改查权限(多个权限)
#databaseName 代表数据库名
- *代表全部库
#tableName 代表具体表,如下
- *代表全部表
- A,B 代表具体A,B表
#userName 代表用户名
#host 代表允许访问的主机,如果host_name省略,默认为%。详情如下:
- %代表通配所有host地址权限(可远程访问)
- localhost为本地权限(不可远程访问)
- 指定某个ip访问权限,如10.138.106.102
撤销用户权限
REVOKE #auth ON '#databaseName'.'#tableName' TO '#userName'@'#host';
与上边“给用户授权”的参数含义是一样的。