mysql8.0用户管理碎碎念
首先从mysql8.04版本开始,mysql更改了默认身份插件从 mysql_native_password 改为 caching_sha2_password 。老客户端可能会出问题。但是这不是距离现在挺久了吗
但是以上和本文正题没关
1、创建远程用户相关
1 | CREATE USER 'finley'@'localhost' |
在这个例子里,用户名为finley的两个账号都是superuser,拥有能做所有事情的权限。'finley'@'hostlocal'
是一个本地账户,仅限在本地机器链接;'finley'@'%.example.com'
是一个远程账户,其中符号%
类似于反掩码,匹配该域名的子域,如只有%
,它将匹配本机的任何地址
如果user table有匿名帐户就要特别注意,如需创建一个远程账户,必须有一个与其用户名对应的本地账户。如上述用户名为finley的账户,一共两个。以上述用户为例,如果只有远程账户finley,那么当finley在本地登录数据库时将会被认为是匿名帐户而不是finley,原因是匿名帐户的host值更为具体而在用户表的排序中更靠前。因此创建远程账户时为了保险,需要为其额外创建一个本地账户
CREATE USER 'dummy'@'localhost'
账户没有任何权限,但是不推荐这样做
2、基本权限管理
1 | CREATE USER 'custom'@'localhost' |
正如上述语句,GRANT...ON <DATABASE>.[TABLE]
可以用户权限限定在某个数据库/表里
GRANT更多用法: MySQL :: MySQL 8.0 Reference Manual :: 13.7.1.6 GRANT Statement
3、关于 Password Validation Component
密码可用性组件,有时候并不会自动安装
如需安装则需要确保设备的相关目录有此文件:
1 | $> cd /path/to/mysql/lib/plugin/ |
再确认数据库全局变量plugin_dir
数值是否指向插件目录:
1 | mysql> SELECT @@plugin_dir; |
接着安装:
1 | mysql> INSTALL COMPONENT 'file://component_validate_password'; |
安装后组件将会立刻开启。这个语句会立即加载安装模块,然后将其注册在mysql.component
这张系统表里,因此它能在后续中当服务启动时被加载
使用
INSTALL
语句需要有INSERT
权限,因为它注册过程需要添加一行语句到上述系统表中
安装过后就可以对与这个组件相关的系统变量进行配置,无论是写在option file 当中还是用SET
语句。当然,因为这是个系统变量,使用SET
语句配置需要用户有SYSTEM_VARIABLES_ADMIN
这个权限。以下是默认配置也是可供option_file使用的选项:
1 | validate_password.policy=1 |
这里记录了validate_password.policy参数对该组件的影响,不同的值将改变检查的性能:
Policy | Tests Performed |
---|---|
0 or LOW |
Length |
1 or MEDIUM |
Length; numeric, lowercase/uppercase, and special characters |
2 or STRONG |
Length; numeric, lowercase/uppercase, and special characters; dictionary file |
如需检查当前组件的相关变量情况:
1 | SHOW VARIABLES LIKE 'validate_password.%'; |
4、检查用户权限和属性
检查用户权限可用以下命令:
1 | mysql> SHOW GRANTS FOR 'admin'@'localhost'; |
此命令需要登录用户对mysql
具有SELECT
权限
检查用户属性可用以下命令:
1 | mysql> SET print_identified_with_as_hex = ON; |
SET print_identified_with_as_hex = ON;
(available as of MySQL 8.0.17)这个系统变量的设置是因为密码字段存储的哈希值会将不可打印字符打印为十六进制字符串而不是常规字符串
此命令需要登录用户对mysql
具有SELECT
权限
5、撤销权限
撤销权限语句revoke
和GRANT
类似,可控制用户对数据库或者表的权限,特别的一点就是TO变成了FROM:
1 | //撤销全局权限 |
6、删除用户
这个简单,示例代码:
1 | DROP USER 'finley'@'localhost'; |
- 标题: mysql8.0用户管理碎碎念
- 作者: 7cmb
- 创建于 : 2023-12-09 01:35:20
- 更新于 : 2024-10-12 23:07:35
- 链接: https://7cmb.com/mysql8-0用户管理碎碎念/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。