数据控制语言DCL
主要是对数据库中的登录和用户的权限进行控制的语言,包含:
- 用户登录
MySQL
数据库 - 修改用户密码及忘记密码如何解决
- 创建普通用户及授权
- 撤销权限
revoke
- 查看权限及删除用户
关于root账户
默认登录
默认情况下,MySQL
数据库是指允许root
账户登录并且在本机上登录的。
-uroot
表示root
账户-p
表示需要密码- 没有
-h
表示默认是本机localhost
或者127.0.0.1
登录
image.png
登录查看账户
MySQL
数据库的服务端口号是3306
,通过在mysql
数据库的user
表中查看登录数据库用户信息:
mysql> show databases;
mysql> use mysql;
mysql> show tables;
mysql> select user, host from user;
image.png
删除用户
需要注意的是删除了某个用户之后必须进行权限的刷新:
mysql> delete from user where host="%";
Query OK, 1 row affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
下图和上图进行对比发现少了%的用户
image.png
注意:当在实际的开发项目中,项目和数据服务器不再同一个地方,可以指定ip连接进行访问。
mysql> update user set host="192.168.21.136" where user="root";
Query OK, 1 row affected (0.02 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select user,host from user;
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
image.png
当退出mysql重新进入,需要指定IP
地址,就是上面设置的IP
:
image.png
密码问题
修改密码
同样需要进入mysql数据库的user表中,为了方便,笔者将IP又改回去啦:
image.png
update user set password=PASSWORD("admin") where user="root";
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
忘记密码
ubuntu@peter:~$ vim /etc/mysql/mysql.conf.d/mysqld.cnf
image.png
mysql> show databases;
mysql> use mysql;
mysql> select user, password from user;
image.png
创建新用户及授权
创建用户
- 进入
mysql
数据库后,创建一个test
用户,并且刷新:
image.png
>update user set host="% where user="test" ; # 谨慎操作
用户授权
grant all privileges on *.* to "test"@"192.168.21.136";
撤销权限
撤销权限使用的是revoke
;承接上面的栗子,撤销test
用户的select
权限:
- revoke:撤销
- select:即将撤销的权限
- peter:从哪个数据库中撤销
- "test"@"192.168.21.136":用户及密码
revoke select on peter.* from "test"@"192.168.21.136";
image.png
撤销权限一定要通过root
账户进入MySQL
;否则出现权限不足的问题
image.png
查看权限和删除用户
查看权限
show grants for 用户名@IP地址;
image.png
删除用户
drop user 用户名@IP地址;
image.png