一、用户授权

  • 给数据库添加新的用户并且设置权限

1.1、grant授权

  • 命令格式
mysql> grant 权限列表  on  库名  to  用户名@"客户端地址" 
	-> identified  by  "密码"    //授权用户面膜
	-> with  grant  option ;  //有授权权限可选项
  • 权限列表
    • all //所有权限

    • usage //无权限

    • select,update,insert //个别权限

    • select,update(字段1,…,字段N) //指定字段

  • 库名
    • *. * //所有库所有表

    • 库名 .* //一个库

    • 库名.表名 //一张表

  • 用户名
    • 授权时自定义 要有标识性

    • 存储在mysql库的user表里

  • 客户端地址
    • % //所有主机

    • 192.168.4.% //网段内的所有主机

    • 192.168.4.1 //一台主机

    • localhost //数据库服务器本机

  • 示例
授权例子 192.168.4.50
[root@db1 ~]# mysql -uroot -p123456
mysql> grant all on  *.* to mydba@"%" identified by "123qqq...A" with grant option ;
//给用户mydba配置所有主机都能登录的权限为all
[root@db2 ~]# mysql -h192.168.4.50 -umydba -p123qqq...A

1.2、相关命令

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

|drop user 用户名@“客户端地址”;|删除授权用户(必须有管理员权限)

1.3、授权库

  • mysql库 记录授权信息,主要表如下
    • 记录已有授权用户对字段的访问权限

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

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

    • 记录已有的授权用户及权限

    • user表

    • db表

    • tables_priv表

    • columns_priv表

1.4、撤销权限

  • 命令格式
mysql> revoke 权限列表  on  库名.表  from   用户名@"客户端地址";

二、root密码管理

2.1、修改root密码

[root@db1 ~]# mysqladmin  -hlocalhost -uroot -p123456  password "654321"
[root@db1 ~]# mysql -uroot -p654321.

2.2、恢复root密码

2.2.1、停止MySQL服务程序

[root@db1 ~]# systemctl stop mysqld

2.2.2、跳过授权表启动MySQL服务

  • 首先将配置文件中非默认的配置注释掉
[root@db1 ~]# vim /etc/my.cnf
[mysqld]
skip-grant-tables
[root@db1 ~]# systemctl start  mysqld

2.2.3、修改root密码

[root@db1 ~]# mysql
mysql> update mysql.user set  authentication_string=password("123qqq...A")
    -> where host="localhost" and  user="root" ;

mysql> flush  privileges ;

mysql> exit

[root@db1 ~]# vim /etc/my.cnf
 [mysqld]
 #skip-grant-tables

2.2.4、以正常方式重启MySQL服务

[root@db1 ~]# systemctl restart mysqld

修改对应的密码配置策略,按需求更改密码

[root@db1 ~]# mysqladmin  -hlocalhost -uroot -p123qqq...A  password "123456"