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