五、MySQL基础系列笔记之SQL DCL语句

作者: 温新

分类: 【MySql】

阅读: 2179

时间: 2020-10-09 15:00:54

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

请登录后再评论