本文主要是介绍Mysql中的用户管理实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
《Mysql中的用户管理实践》:本文主要介绍Mysql中的用户管理实践,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧...
13. 用户管理
为什么不能只用 root: 出于安全考虑,不应该所有操作都由 root 执行。
mysql 的用户信息存储位置: mysql.user
表。
13.1 用户
13.1.1 用户信息
- 用户表字段解释:
host
: 可以从哪台主机登录。user
: 用户名。authentication_string
: 加密后的密码。*_priv
: 用户权限。
select User,Host,authentication_string from user;
13.1.2 创建用户
语法:
create user '用户名'@'主机名' identified by '密码';
示例:
create user 'maomi-9527'@'localhost' identified by '666888';
13.1.3 删除用户
正确语法:
drop user '用户名'@'主机名';
常见错误:
drop user maomi-9527; -- 错误,因为主机名默认是 %
原因:
mysql可以创建两个相同用户相同密码但登录地点不一样的用户:
13.1.4 修改用户密码
自己改密码:
set password = password('python新密码');
root 改指定用户密码:
set password for 'maomi-9527'@'localhost' = password('666888');
由于在 MySQL 中,用户信息本质上是存储在 mysql.user
表中的,因此我们也可以直接通过 SQL 语句修改该表的内容来重设密码。例如:
UPDATE user SET authentication_string = PASSWORD('你的新密码') WHERE user = 'root' AND host = 'localhost';
13.1.5 密码策略要求
MySQL 8.0+ 版本默认启用了 validate_password
插件,它会根据以下规则检查密码强度:
- 密码长度:默认要求密码至少为 8 个字符。
- 字符复杂度:
- 至少包含一个大写字母(A-Z)。
- 至少包含一个小写字母(a-z)。
- 至少包含一个数字(0-9)。
- 至少包含一个特殊字符(例如
@
,#
,$
,%
)。
1. 设置一个更强的密码
你可以设置一个符合强度要求的密码,例如:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Newpassword123!';
或者:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Str0ngP@ssw0rd!';
2. 临时降低密码策略要求
如果你不想设置那么复杂的密码,可以通过降低密码策略要求来解决。执行以下命令来临时降低要求:
SET GLOBAL validate_password_policy = LOW;-------------------设置密码强度为低 SET GLOBAL validate_password_length = 6;----------------------设置密码长度为6 SET GLOBAL validate_password_mixed_case_count = 0;------------设置混合字符为0 SET GLOBAL validate_password_special_char_count = 0; --------设置特殊字符个数为0
然后,你就可以设置一个简单的密码了:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'simplepass';
注意: 降低密码策略可能会影响安全性,操作完成后可以将策略恢复:
SET GLOBAL validate_password_polhttp://www.chinasem.cnicy = MEDIUM;-------------------设置密码强度为低 SET GLOBAL validate_password_length = 8;----------------------设置密码长度为6 SET GLOBAL validate_password_mixed_case_count = 1;------------设置混合字符为0 SET GLOBAL validate_password_sRamJeQYgApecial_char_count = 1; --------设置特殊字符个数为0
3. 查看当前密码策略
你可以通过以下命令查看当前密码策略的设置:
SHOW VARIABLES LIKE 'validate_password%';
13.2 数据库的权限
常见权限:
select
, insert
, update
, delete
, create
, drop
, grant
, all
等。
13.2.1 授权
授权语法:
grant 权限列表 on 数据库.表 to '用户名'@'主机' [identified by '密码'];
示例:
grant select on text.* to 'maomi-9527'@'localhost';------给用户在test数据库中所有表的查看权限
赋权前:
赋权后:
查看当前权限:
show grants for 'maomi-9527'@'localhost';
13.2.2 回收权限
撤销语法:
revoke 权限列表 on 数据库.对象 from '用户名'@'主机';
示例:
revoke select on text.* from 'maomi-9527'@'localhost';
常见问题提示:
若密码设置失败报错 ERROR 1819
:
可调整密码策略来解决。
赋权后无效时建议:
flush privileges;
到此这篇关于Mysql中的用户管理的文章就介绍到这了,更多相关mysql用户管理内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程China编程(www.chinasem.cn)!
这篇关于Mysql中的用户管理实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!