五、MySQL基础系列笔记之SQL DCL语句
DCL语句主要是DBA用来管理系统中对象权限时使用,开发人员一般用的少。
MySQL是一个多用户数据库,有着强大的访问控制系统,可以为不同的用户的指定允许的权限。MySQL中用户分为普通用户与root用户。root用户是超级管理员,拥有所有权限,普通用户只拥有被授予权限。
登录数据库详解
语法
mysql -h 主机名 -u 用户名 -p 密码 -P 端口 数据库名 -e 执行sql语句;
用户管理
1、创建普通用户
语法
create user 用户名[@主机名] [identified by '密码'];
注意:主机名默认值为%,表示这个用户可以从任何主机连接mysql服务器。
案例
# 案例一:不指定主机名
mysql> create user test01;
mysql> select user,host from mysql.user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| test01 | % |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+-----------+
5 rows in set (0.00 sec)
# 案例二:指定主机名
mysql> create user test02@localhost;
Query OK, 0 rows affected (0.02 sec)
# 案例三:指定密码
mysql> create user test03@localhost identified by '123123';
Query OK, 0 rows affected (0.02 sec)
2、修改用户密码
语法
alter 用户表 用户名@主机 identified with mysql_native_password by 密码;
案例
mysql> alter user test02@localhost identified with mysql_native_password by '123456';
Query OK, 0 rows affected (0.09 sec)
3、删除用户
语法一
drop user 用户名@主机;
案例
mysql> drop user test04@localhost;
Query OK, 0 rows affected (0.09 sec)
语法二
delete from user where user = '用户名' and host = '主机';
flush privileges;
案例
mysql> delete from user where user = 'test03' and host = 'localhost';
Query OK, 1 row affected (0.03 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
用户授权
4、查看所有可设置的权限
mysql> show privileges;
5、给用户授权
语法
grant privileges on 数据名.表 to 用户[@主机] [identified by 用户密码] [with grant option];
案例
# 为test02用户授权操作所有数据库的权限
mysql> grant all on *.* to test02@localhost;
Query OK, 0 rows affected (0.01 sec)
# 授权test03用户有对demo数据库的操作权限
mysql> create user test03@localhost identified by '123456';
Query OK, 0 rows affected (0.04 sec)
mysql> grant all on demo.* to test03@localhost;
Query OK, 0 rows affected (0.01 sec)
6、查看用户权限
语法
show grants for 用户名@主机;
案例
mysql> show grants for test03@localhost;
+----------------------------------------------------------+
| Grants for test03@localhost |
+----------------------------------------------------------+
| GRANT USAGE ON *.* TO `test03`@`localhost` |
| GRANT ALL PRIVILEGES ON `demo`.* TO `test03`@`localhost` |
+----------------------------------------------------------+
2 rows in set (0.00 sec)
7、查看当前用户权限
语法
show grants;
8、撤销用户权限
语法
revoke privileges on 数据库.表 from 用户[@主机];
案例
mysql> revoke all on demo.* from test03@localhost;
Query OK, 0 rows affected (0.01 sec)
2020-10-09
请登录后再评论