目录
MySQL 用户授权
用户授权
grant授权
- 用户授权
—— 在数据库服务器上添加新的连接用户,在添加用户时可以设置访问权限及连接密码。
—— 默认数据库管理员root用户本机登录有授权权限。
- 命令格式
mysql> grant 权限列表 on 库名 to 用户名@“客户端地址”
identified by “密码” //授权用户密码
with grant option; //有授权权限,可选项
- 权限列表
—— all //所有权限
—— usage //无权限
—— select,update,insert //个别权限
—— select,update (字段1, … ,字段N) //指定字段
- 库名
—— *.* //所有库所有表
—— 库名.* //一个库
—— 库名.表名 //一张表
- 用户名
—— 授权时自定义要有标识性
—— 存储在mysql库的user表里
- 客户端地址
—— % //所有主机
—— 192.168.233.% //网段内的所有主机
—— 192.168.233.1 //1台主机
—— localhost //数据库服务器本机
- 应用示例
—— 添加用户mydba,对所有库、表有完全权限
—— 允许从任何客户端连接,密码123qqq…A
—— 且有授权权限
实验环境准备:
MySQL服务端为主机192.168.233.130
MySQL客户端为主机192.168.233.150
注:MySQL客户端也要装有MySQL软件,否则无法使用SQL语句,也可以是用Mariadb替代。
服务端:
mysql> grant all on *.* to mydba@“%” identified by “123qqq…A” with grant option; //服务端进行用户授权,all表示有所有权限;*.*指所有库、所有表;%是指允许从所有主机进行连接;密码是123qqq…A,with grant option指的是有授权权限,可以授予别的用户权限。
客户端:
[root@DB2 ~]# mysql -h192.168.233.130 -umydba -p123qqq…A //客户端使用授权用户连接数据库服务器
-
- 验证删除库和表的权限
客户端:
mysql> show databases; //从客户端查看数据库服务器中所有的库
mysql> drop database db1; //在客户端删除库db1
服务端:
mysql> show databases; //在服务端查询库db1已被删除
客户端:
mysql> use db2;
mysql> show tables;
mysql> drop table db2.t2; //在客户端删除库db2中的t2表
服务端:
mysql> select * from db2.t2; //在服务端查询db2中的t2表的数据出现报错,原因db2.t2表已被删除
ERROR 1146 (42S02): Table ‘db2.t2’ doesn’t exist
-
- 验证新建库和表的权限
客户端:
mysql> create database db4; //在客户端新建一个库db4
mysql> create table db4.t1(id int); //在客户端库db4中新建一个表t1
服务端:
mysql> show databases; //在服务端查询库db4创建成功
mysql> use db4;
mysql> show tables; //在服务端查询表t1创建成功
-
- 验证对表记录进行增删改查的权限
客户端:
mysql> select * from db3.user limit 1; //在客户端查询db3库中user表的前一行数据
mysql> insert into db4.t1 values(100); //在客户端db4库中的t1表中插入记录
服务端:
mysql> select * from db4.t1; //在服务端中查询db4库中的t1表,发现刚才插入的记录