hydd的Linux笔记Day56

Day56

用户授权

用户授权

grant授权

授权:添加用户并设置权限。

命令格式

​ grant 权限列表 on 库名 to 用户名@“客户端地址”

​ identified by “密码” //授权用户密码

​ wIth grant option; //有授权权限,可选项

权限列表

all		//所有权限
usage	//无权限
seelct,update,insert	//个别权限
select,update(字段1,……,字段N)	//指定字段

库名

*.*			//所有库所有表
库名.*		//一个库
库名.表名		//一张表

用户名

授权时自定义 要有标识性

存储在mysql库的user表里

客户端地址

%					//所有主机
192.168.4.%			//网段内所有的主机
192.168.4.1			//1台主机
localhost			//数据库服务器本机
相关命令

登录用户使用

命令 作用
select user(); 显示用户名及客户端地址
show grants; 用户显示自身访问权限
show grants for 用户名@“客户端地址”; 管理员查看已有授权用户权限
set password= password(“密码”); 授权用户连接后修改连接密码
set password for 用户@“客户端地址”=password(“密码”); 管理员重置授权用户连接密码
drop user 用户名@“客户端地址”; 删除授权用户(必须有管理员权限)
授权库

mysql库记录授权信息,主要表如下:

user表 记录已有授权用户及权限

db表 记录已有授权用户对数据库的访问权限

tables_priv表 记录已有授权用户对表的访问权限

columns_priv表 记录已有授权用户对字段的访问权限

查看表记录可以获取用户权限:也可以通过更新记录,修改用户权限

撤销权限

命令格式:

revoke 权限列表 on 库名.表 from 用户名@“客户端地址”;

root密码

root密码忘记怎么办

1.停止MySQL服务程序

[root@dbsvr1 ~]# systemctl  stop mysqld.service           //停止服务
[root@dbsvr1 ~]# systemctl  status mysqld.service          //确认状态
mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled)
   Active: inactive (dead) since 五 2017-04-07 23:01:38 CST; 21s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 20260 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
  Process: 20238 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
 Main PID: 20262 (code=exited, status=0/SUCCESS)

2.跳过授权表启动MySQL服务程序

这一步主要利用mysqld的 --skip-grant-tables选项

修改my.cnf配置,添加 skip_grant_tables=1启动设置:

[root@dbsvr1 ~]# vim /etc/my.cnf
[mysqld]
skip_grant_tables
.. ..
[root@dbsvr1 ~]# systemctl  start mysqld.service
[root@dbsvr1 ~]# service mysql status
mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled)
   Active: active (running) since 五 2017-04-07 23:40:20 CST; 40s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 11698 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
  Process: 11676 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
 Main PID: 11701 (mysqld)
   CGroup: /system.slice/mysqld.service
           └─11701 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.p...

3.修改root密码

由于前一步启动的MySQL服务跳过了授权表,所以可以root从本机直接登录

[root@dbsvr1 ~]# mysql  //直接回车即可
                                
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.17 MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> 

进入 mysql> 环境后,通过修改mysql库中user表的相关记录,重设root用户从本机登录的密码:

mysql> UPDATE mysql.user SET authentication_string=PASSWORD('123qqq…A')
    -> WHERE user='root' AND host='localhost';              //重设root的密码
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 1
mysql> FLUSH PRIVILEGES;                                  //刷新授权表
Query OK, 0 rows affected (0.01 sec)
mysql> exit                                              //退出mysql> 环境
Bye

通过执行“FLUSH PRIVILEGES;”可使授权表立即生效,对于正常运行的MySQL服务,也可以用上述方法来修改密码,不用重启服务。本例中因为是恢复密码,最好重启MySQL服务程序,所以上述“FLUSH PRIVILEGES;”操作可跳过。

4.已正常方式重启MySQL服务程序

如果前面是修改/etc/my.cnf配置的方法来跳过授权表,则重

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值