权限简介
权限管理
- 登录和退出MySQL
本地登录客户端命令:
mysql -uroot -pqf123
远程登陆:
客户端语法:mysql -u 用户名 -p 密码 -h ip地址 -P端口号:如果没有改端口号就不用-P指定端口
号:如果没有改端口号就不用-P指定端口
mysql -h192.168.246.253 -P 3306 -uroot -pqf123![在这里插入图片描述](https://img-blog.csdnimg.cn/7ef0aaa9ef324430a3a8eeb588c0c68c.png)
步骤1:先修改服务端的root配置文件
如果报错进入server端服务器登陆mysql执行:
mysql> use mysql 进入这个库
mysql> update user set host = ‘%’ where user = ‘root’; 修改这个登录类型
mysql> flush privileges; 刷新 重点
步骤2: 修改端口号 或者非交互模式
mysql -h192.168.246.253 -P 3306 -uroot -pqf123 -e ‘show databases;’
-h 指定主机名 【默认为localhost】
-大P MySQL服务器端口 【默认3306】
-u 指定用户名 【默认root】
-p 指定登录密码 【默认为空密码】
-e 接SQL语句,可以写多条拿;隔开
mysql -h192.168.246.253 -P 3306 -uroot -pqf123 -D mysql -e ‘select * from user;’
此处 -D mysql为指定登录的数据库
步骤3:修改端口rpm安装:vim /etc/my.cnf
在到【mysqld】标签下面添加port=指定端口。
flush privileges 重启服务
2.创建用户
方法一:CREATE USER语句创建
mysql> create user tom@‘localhost’ identified by ‘qf@123’; #创建用户为tom,并设置密码。
mysql> FLUSH PRIVILEGES; #更新授权表
注: 语句讲解
案例:
GRANT —授权。
GRANT —授权。
mysql> GRANT ALL ON . TO ‘user3’@’localhost’;
#权限 库名.表名 账户名
步骤: 更新 重点 改完一定要更新
mysql> FLUSH PRIVILEGES; 更新MySQL
Query OK, 0 rows affected (0.00 sec)
修改远程登陆:
将原来的localhost修改为%或者ip地址
步骤:mysql> use mysql 先进入这个表
步骤;“mysql> update user set host = ‘%’ where user = ‘mq’; 修改登录类型
步骤:mysql> FLUSH PRIVILEGES; 更新MySQL
刷新权限
修改表之后需要刷新权限
方式1: mysql > flush privileges;
创建用户并制定权限
方式二:使用命令创建用户并授权:grant
也可创建新账户(不过后面的版本会移除这个功能,建议使用create user)
语法格式:
grant 权限列表 on 库名.表名 to ‘用户名’@‘客户端主机’ IDENTIFIED BY ‘Qf@123’;
==权限列表 all 所有权限(不包括授权权限)
操作案例: 指定权限并 创建新的用户
mysql> grant select,insert on . to tq@‘192.168.150.%’ identified by’TianQing@123’;
Query OK, 0 rows affected, 1 warning (0.00 sec)
#单独授权
mysql> grant select on . to mq@’%’;
查看权限
查看权限
1.看自己的权限:
mysql> SHOW GRANTS\G
*************************** 1. row ***************************
Grants for root@%: GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ WITH GRANT OPTION
2.看别人的权限:
mysql> SHOW GRANTS FOR tom@‘localhost’\G
*************************** 1. row ***************************
Grants for tom@localhost: GRANT SELECT, INSERT ON . TO ‘tom’@‘localhost’
移除权限
移除用户权限
语法:REVOKE 权限 ON 数据库.数据表 FROM ‘用户’@‘IP地址’;
- 被回收的权限必须存在,否则会出错
- 整个数据库,使用 ON datebase.*;
- 特定的表:使用 ON datebase.table;
方法1:回收指定权限
mysql> revoke insert on . from tq@‘192.168.150.%’;
Query OK, 0 rows affected (0.00 sec)
方法2:回收所有权限
mysql> revoke all on . from tq@‘192.168.150.%’;
Query OK, 0 rows affected (0.00 sec)
修改密码
===root修改自己密码
方法一:
语法: mysqladmin -uroot -p’123’ password ‘new_password’ #123为旧密码
案例:
mysqladmin -uroot -p’qf123’ password ‘qf@123’;
方法二:
set password=‘新密码’;
==root修改其他用户密码
mysql> use mysql 先进入这个表
mysql> set password for tian@‘192.168.150.%’=‘TianQing@123’;
删除用户
方法一:DROP USER语句删除
mysql> drop user tq@‘192.168.150.%’
方法二:DELETE语句删除 删除某一行的方法
mysql> delete from mysql.user where user=‘用户名’ and host=‘登录方式’^C
mysql> 上面这种方法 防止删除其他同名用户
更新授权表: FLUSH PRIVILEGES;
查看密码复杂度
MySQL 5.7默认启用了密码复杂度设置,插件名字叫做 validate_password,初始化之后默认是安装的如果没有安装执行下面的命令会返回空或者没有值,这时需要安装该插件
安装插件
mysql> INSTALL PLUGIN validate_password SONAME ‘validate_password.so’;
步骤:先查看这个文件
mysql> show variables like ‘validate%’;
4.设置密码复杂度
mysql> set global validate_password_length=1; #设置密码长度为1个
mysql> set global validate_password_number_count=2; #设置密码数字最少为2个
5.设置密码复杂性策略
mysql> set global validate_password_policy=LOW; 也可以是数字表示。#设置密码策略
mysql> flush privileges; #刷新授权