一. 用户管理
1. 查询用户
SELECT host,user FROM mysql.user;
2. 添加用户
- 可使用
create或grant(当用户不存在时创建用户,并授权,参考授权管理)命名创建用户。
CREATE USER '用户名'@'主机' IDENTIFIED BY '密码';
3. 删除用户
DROP USER '用户名'@'主机';
二. 密码管理
1. 密码策略
- Mysql针对密码
复杂度和长度设置了不同的策略。
-- 查看安全策略,不同数据库版本的变量名有差异
SHOW VARIABLES LIKE 'validate%';
-- 密码复杂度,从低到高为0、1、2三个级别
SET GLOBAL validate_password_policy = 0;
-- 密码长度,最短为4位,低于4位按4位处理
SET GLOBAL validate_password_length = 4;
2. 简单密码
- PC或测试环境,可设置忽略策略验证
$ vim /etc/my.cnf
#======================
[mysqld]
validate_password=off
#======================
3. 修改密码: 推荐临时通用密码 My#123.com
SET PASSWORD FOR '用户名'@'主机名'=PASSWORD('新密码');
-- 或
ALTER USER '用户名'@'主机名' IDENTIFIED BY '新密码';
4. 忘记Root密码
#1. 在/etc/my.cnf的[mysqld]段添加如下内容
[mysqld]
skip-grant-tables
#2. 启动服务
$ systemctl restart mysqld
#4.无需用户名和密码,直接登录mysql,并修改密码
$ mysql
mysql> update mysql.user set authentication_string=password('123456') where user='root';
#mysql> update mysql.user set password=password('123456') where user='root' and host='localhost'; # v5.6
mysql> FLUSH PRIVILEGES;
#4. 删除第一步的skip-grant-tables,再次重启服务
$ systemctl restart mysqld
#5. 密码已找回,密码登录
$ mysql -uroot -p123456
三. 权限管理
1. 查看权限
privileges:意为特权,权限
SHOW GRANT FOR '用户名'@'主机名';
2. 授予权限:grant to
WITH GRANT OPTION:表示该用户可以继续将自己拥有的权限授权给别人。
GRANT <权限列表> ON 数据库名.表名 TO '用户名'@'主机名' [IDENTIFIED BY '密码'] [WITH GRANT OPTION];
FLUSH PRIVILEGES;
# [WITH GRANT OPTION]查看Grant_priv是否为Y
SELECT host,user,Grant_priv FROM mysql.user;
3. 远程访问:
- 当用户不存在时创建用户,并授权
GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY 'My#123.com' WITH GRANT OPTION;
FLUSH PRIVILEGES;
4. 撤销权限:revoke from
REVOKE <权限列表> ON 数据库名.表名 FROM '用户名'@'主机名';
FLUSH PRIVILEGES;
参考:
https://www.cnblogs.com/hcbin/archive/2010/04/23/1718379.html
https://blog.youkuaiyun.com/wawa8899/article/details/86063926
326

被折叠的 条评论
为什么被折叠?



