前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL学习6_DCL

MySQL学习6_DCL

作者头像
皮大大
发布2021-03-02 14:57:25
4320
发布2021-03-02 14:57:25
举报
文章被收录于专栏:机器学习/数据可视化

DCL

data control language,DCL,数据控制语言,主要是对数据库中的登录和用户的权限进行控制的语言,包含

  • 用户登录MySQL数据库
  • 修改用户密码及忘记密码如何解决
  • 创建普通用户及授权
  • 撤销权限revoke
  • 查看权限及删除用户

全部命令

代码语言:javascript
复制
1. 查看数据库中的用户及信息
mysql -uroot -p
show databases;
use mysql;
show tables;
select user, host, passord from user;    # 所有的用户都在user表中

2. 创建新用户、授权、撤销权限和删除
-- 创建
create user "test"@"192.168.2.10" identified by"password";    # 指定用户test、ip和密码password
flush privileges;  # 刷新权限
mysql -utest -h192.168.2.10 -p  # 用test用户登录

-- 授权
grant select, insert, delete on shop.* to "test"@"192.168.2.10";   # shop 是数据库,test是数据库中的表
flush privileges;  # 刷新权限
systemctl restart mysql;  # 重启mysql

-- 创建用户的同时进行授权
grant select, insert, delete on shop.* to "test"@"192.168.2.10" identified  by"password";

-- 查看权限
show grants for "test"@"192.168.2.10"\G   # \G参数是为了输出好看

-- 撤销权限
revoke delete on shop.* to "test"@"192.168.2.10";   # 撤销shop数据库中test用户的delete权限
flush privileges;  # 刷新权限
systemctl restart mysql;  # 重启mysql

-- 删除用户
drop user "test"@"192.168.2.10";

-- 谨慎操作
grant all privileges on *.* to "test"@"192.168.2.10"  # 将所有的权限给所有数据库


3. 修改用户密码
-- 已知用户原密码,能够进行登录
mysql -uroot -p
show databases;
use mysql;
show tables;
select user, host, password from user;    # 所有的用户都在user表中
update user set password=PASSWORD("123456admin") where user="test";  # 将test用户的密码改成123456admin
flush privileges;

-- 忘记原来的密码:借助跳跃权限表,重启守护进程
mysql skip-grant-tables  # 跳跃权限表
mysql  # 重新进入mysql
show databases;use mysql;show tables;
select user, host, password from user;    # 所有的用户都在user表中
update user set password=PASSWORD("123456admin") where user="test";  # 将test用户的密码改成123456admin
flush privileges;

4. 查看mysql服务
-- window
直接去任务管理器
-- linux
netstat -an   # 找到3306端口

关于root账户

默认登录

默认情况下,MySQL数据库是指允许root账户登录并且在本机上登录的。

  • -uroot表示root账户
  • -p表示需要密码
  • 没有-h表示默认是本机localhost或者127.0.0.1登录
登录查看账户

MySQL数据库的服务端口号是3306,通过在mysql数据库的user表中查看登录数据库用户信息:

代码语言:javascript
复制
mysql> show databases;  # 查看所有的数据库
mysql> use mysql;   # 选择mysql数据库
mysql> show tables;   # 查表数据库中的所有表
mysql> select user, host from user;   # 查看这个表中的user和host信息
删除用户

需要注意的是删除了某个用户之后必须进行权限的刷新:

代码语言:javascript
复制
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连接进行访问。

代码语言:javascript
复制
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)

当退出mysql重新进入,需要指定IP地址,就是上面设置的IP

image
image

密码问题

修改密码

同样需要进入mysql数据库的user表中

代码语言:javascript
复制
mysql>update user set password=PASSWORD("admin")  where user="root";   # 将root账户的密码改为admin

mysql> flush privileges;   # 更新操作
Query OK, 0 rows affected (0.00 sec)
忘记密码
  • 如果忘记了密码,需要进入配置文件中
代码语言:javascript
复制
ubuntu@peter:~$ vim /etc/mysql/mysql.conf.d/mysqld.cnf
  • 找到下图中的skip-grant-tables,将前面的#去掉,就是取消注释:取消权限认证,后台开启新的进程免密进入MySQL
  • 重启MySQL服务:systemctl restart mysql
  • 通过MySQL直接进入:
  • 然后按照上面的步骤重新设置密码即可
代码语言:javascript
复制
mysql> show databases;
mysql> use mysql;
mysql> select user, password  from user;
# 接下来重新设置密码即可

创建新用户及授权

创建用户
  • 进入mysql数据库后,创建一个test用户,并且刷新权限:
  • 尝试登陆,创建成功:
  • %使用,匹配所有: 如果想所有的IP都可以通过test账户访问mysql,将host指定为%;危险操作,谨慎使用
代码语言:javascript
复制
msyql>update user set host="% where user="test" ;     # 谨慎操作
用户授权
  • 授权 将select、insert、delete等操作权限授权给新建的用户test
  • 测试授权是否成功
  • 进入mysql数据库中,选中peter这个数据库中,创建一个test
  • create权限成功
  • insertselect 权限成功
  • 将test账户的所有权限给所有数据库,谨慎操作
代码语言:javascript
复制
grant all privileges on *.* to "test"@"192.168.21.136";

撤销权限

撤销权限使用的是revoke;承接上面的栗子,撤销test用户的select权限:

  • revoke:撤销
  • select:即将撤销的权限
  • peter:从哪个数据库中撤销
  • “test”@“192.168.21.136”:用户及密码
代码语言:javascript
复制
revoke select on peter.* from "test"@"192.168.21.136";

撤销权限一定要通过root账户进入MySQL;否则出现权限不足的问题

查看权限和删除用户

查看权限
代码语言:javascript
复制
show grants for 用户名@IP地址;
删除用户
代码语言:javascript
复制
drop user 用户名@IP地址;
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-10-3,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • DCL
  • 全部命令
  • 关于root账户
    • 默认登录
      • 登录查看账户
        • 删除用户
        • 密码问题
          • 修改密码
            • 忘记密码
            • 创建新用户及授权
              • 创建用户
                • 用户授权
                • 撤销权限
                • 查看权限和删除用户
                  • 查看权限
                    • 删除用户
                    相关产品与服务
                    云数据库 SQL Server
                    腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档