MySQL札记8_DCL(数据控制语言)

浏览: 1135

数据控制语言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数据库
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)

下图和上图进行对比发现少了%的用户

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";   # 将root账户的密码改为admin

mysql> flush privileges; # 更新操作
Query OK, 0 rows affected (0.00 sec)

忘记密码

  • 如果忘记了密码,需要进入配置文件中
ubuntu@peter:~$ vim /etc/mysql/mysql.conf.d/mysqld.cnf
  • 找到下图中的skip-grant-tables,将前面的#去掉,就是取消注释:取消权限认证,后台开启新的进程免密进入MySQL



    image.png

  • 重启MySQL服务:systemctl restart mysql

  • 通过mysql直接进入:

image.png

  • 然后按照上面的步骤重新设置密码即可
mysql> show databases;
mysql> use mysql;
mysql> select user, password from user;
# 接下来重新设置密码即可

image.png

创建新用户及授权

创建用户

  • 进入mysql数据库后,创建一个test用户,并且刷新:

image.png

  • 尝试登陆,创建成功:




    image.png

  • %使用,匹配所有:
    如果想所有的IP都可以通过test账户访问mysql,将host指定为%;危险操作,谨慎使用

>update user set host="% where user="test" ;     # 谨慎操作

用户授权

  • 授权
    select、insert、delete等操作权限授权给新建的用户:use



    image.png

  • 测试授权是否成功




    image.png

  • 进入mysql数据库中,选中peter这个数据库中,创建一个test



    image.png

  • create权限成功



    image.png

  • 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;否则出现权限不足的问题

image.png

查看权限和删除用户

查看权限

show grants for 用户名@IP地址;

image.png

删除用户

drop user 用户名@IP地址;

image.png

推荐 0
本文由 皮大大 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册