DCL
data control language,DCL
,数据控制语言,主要是对数据库中的登录和用户的权限进行控制的语言,包含
- 用户登录
MySQL
数据库 - 修改用户密码及忘记密码如何解决
- 创建普通用户及授权
- 撤销权限
revoke
- 查看权限及删除用户
全部命令
1 | 1. 查看数据库中的用户及信息 |
关于root
账户
默认登录
默认情况下,MySQL
数据库是指允许root
账户登录并且在本机上登录的。
-uroot
表示root
账户-p
表示需要密码- 没有
-h
表示默认是本机localhost
或者127.0.0.1
登录
登录查看账户
MySQL
数据库的服务端口号是3306
,通过在mysql
数据库的user
表中查看登录数据库用户信息:
1 | mysql> show databases; # 查看所有的数据库 |
删除用户
需要注意的是删除了某个用户之后必须进行权限的刷新:
1 | mysql> delete from user where host="%"; # 删除host为%的用户 |
注意:当在实际的开发项目中,项目和数据库服务器不再同一个地方,可以指定ip连接进行访问。
1 | mysql> update user set host="192.168.1.10" where user="root"; |
当退出mysql
重新进入,需要指定IP
地址,就是上面设置的IP
:
密码问题
修改密码
同样需要进入mysql
数据库的user
表中
1 | mysql>update user set password=PASSWORD("admin") where user="root"; # 将root账户的密码改为admin |
忘记密码
- 如果忘记了密码,需要进入配置文件中
1 | ubuntu@peter:~$ vim /etc/mysql/mysql.conf.d/mysqld.cnf |
-
找到下图中的
skip-grant-tables
,将前面的#去掉,就是取消注释:取消权限认证,后台开启新的进程免密进入MySQL
-
重启
MySQL
服务:systemctl restart mysql
-
通过
MySQL
直接进入:
- 然后按照上面的步骤重新设置密码即可
1 | mysql> show databases; |
创建新用户及授权
创建用户
- 进入
mysql
数据库后,创建一个test
用户,并且刷新权限:
- 尝试登陆,创建成功:
- %使用,匹配所有:
如果想所有的IP都可以通过test账户访问mysql,将host指定为%;危险操作,谨慎使用
1 | msyql>update user set host="% where user="test" ; # 谨慎操作 |
用户授权
- 授权
将select、insert、delete
等操作权限授权给新建的用户test
- 测试授权是否成功
- 进入
mysql
数据库中,选中peter
这个数据库中,创建一个test
表
create
权限成功
insert
和select
权限成功
- 将test账户的所有权限给所有数据库,
谨慎操作
1 | grant all privileges on *.* to "test"@"192.168.21.136"; |
撤销权限
撤销权限使用的是revoke
;承接上面的栗子,撤销test
用户的select
权限:
revoke
:撤销select
:即将撤销的权限peter
:从哪个数据库中撤销- “test”@“192.168.21.136”:用户及密码
1 | revoke select on peter.* from "test"@"192.168.21.136"; |
撤销权限一定要通过root账户进入MySQL;否则出现权限不足的问题
查看权限和删除用户
查看权限
1 | show grants for 用户名@IP地址; |
删除用户
1 | drop user 用户名@IP地址; |