22、管理用户
查询用户:
USE mysql; SELECT * FROM user;
创建用户:
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
主机名(或IP地址)用于限制用户连接数据库服务器时的来源主机。它回答了一个问题:“这个用户'用户名',允许从'哪台机器'上登录?”
| 主机名值 | 示例 | 含义解析 | 使用场景 |
|---|---|---|---|
| `'localhost' | 'myuser'@'localhost' |
用户 只能从数据库服务器本机 进行连接。 | 1. 数据库管理员(DBA)账户。 2. 运行在数据库本机的应用程序(如PHP网站)。 3. 最安全的选项。 |
| `'%' | 'myuser'@'%' |
用户 可以从任何主机 连接到数据库服务器。 | 1. 需要从不同机器(如应用服务器、开发机)访问数据库的账户。 2. 方便但风险高,需谨慎使用。 |
| 特定IP地址 | 'myuser'@'192.168.1.100' |
用户只能从 指定的这一台机器 连接。 | 1. 指定某个应用服务器连接数据库。 2. 安全性和灵活性兼顾。 |
| IP网段(通配符%) | 'myuser'@'192.168.1.%''myuser'@'192.168.%.%' |
用户可以从 一个IP地址段 内的任何机器连接。 | 1. 允许一个部门或一个子网内的机器连接。 2. 例如,允许整个办公网络访问。 |
| 完整域名 | 'myuser'@'app01.company.com' |
用户只能从 指定域名解析的机器 连接。 | 1. 依赖于DNS解析,不常用,怕DNS出问题。 2. 在内部有稳定域名解析的环境中使用。 |
修改用户密码:
ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码';
删除用户:
DROP USER '用户名'@'主机名';
例子:
-- 创建用户test,只能在当前主机localhost访问 create user 'test'@'localhost' identified by '123456'; -- 创建用户test,能在任意主机访问 create user 'test'@'%' identified by '123456'; create user 'test' identified by '123456'; -- 修改密码 alter user 'test'@'localhost' identified with mysql_native_password by '1234'; -- 删除用户 drop user 'test'@'localhost';
注意事项
- 主机名可以使用 % 通配
查询用户
SELECT user, host, authentication_string FROM mysql.user;
mysql.user 表
是 MySQL 用户认证和权限管理的核心表。
-- 查看完整的表结构 DESC mysql.user; -- 或者 SHOW COLUMNS FROM mysql.user; -- 查看创建语句 SHOW CREATE TABLE mysql.user;
| 字段名 | 类型 | 说明 |
|---|---|---|
Host |
char(255) | 允许连接的主机 |
User |
char(32) | 用户名 |
authentication_string |
text | 加密后的密码 |
Select_priv |
enum('N','Y') | 查询权限 |
Insert_priv |
enum('N','Y') | 插入权限 |
Update_priv |
enum('N','Y') | 更新权限 |
Delete_priv |
enum('N','Y') | 删除权限 |
Create_priv |
enum('N','Y') | 创建表/数据库权限 |
Drop_priv |
enum('N','Y') | 删除表/数据库权限 |
Reload_priv |
enum('N','Y') | 重载权限 |
Shutdown_priv |
enum('N','Y') | 关闭服务器权限 |
Process_priv |
enum('N','Y') | 查看进程权限 |
File_priv |
enum('N','Y') | 文件操作权限 |
Grant_priv |
enum('N','Y') | 授予权限的权限 |
References_priv |
enum('N','Y') | 外键权限 |
Index_priv |
enum('N','Y') | 索引权限 |
Alter_priv |
enum('N','Y') | 修改表权限 |
Show_db_priv |
enum('N','Y') | 显示数据库权限 |
Super_priv |
enum('N','Y') | 超级权限 |
Create_tmp_table_priv |
enum('N','Y') | 创建临时表权限 |
Lock_tables_priv |
enum('N','Y') | 锁表权限 |
Execute_priv |
enum('N','Y') | 执行权限 |
Repl_slave_priv |
enum('N','Y') | 复制从库权限 |
Repl_client_priv |
enum('N','Y') | 复制客户端权限 |
Create_view_priv |
enum('N','Y') | 创建视图权限 |
Show_view_priv |
enum('N','Y') | 显示视图权限 |
Create_routine_priv |
enum('N','Y') | 创建存储过程权限 |
Alter_routine_priv |
enum('N','Y') | 修改存储过程权限 |
Create_user_priv |
enum('N','Y') | 创建用户权限 |
Event_priv |
enum('N','Y') | 事件权限 |
Trigger_priv |
enum('N','Y') | 触发器权限 |
Create_tablespace_priv |
enum('N','Y') | 创建表空间权限 |
ssl_type |
enum('','ANY','X509','SPECIFIED') | SSL类型 |
ssl_cipher |
blob | SSL密码 |
x509_issuer |
blob | X509颁发者 |
x509_subject |
blob | X509主题 |
max_questions |
int unsigned | 每小时最大查询数 |
max_updates |
int unsigned | 每小时最大更新数 |
max_connections |
int unsigned | 每小时最大连接数 |
max_user_connections |
int unsigned | 最大用户连接数 |
plugin |
char(64) | 认证插件 |
authentication_string |
text | 认证字符串 |
password_expired |
enum('N','Y') | 密码是否过期 |
password_last_changed |
timestamp | 密码最后修改时间 |
password_lifetime |
smallint unsigned | 密码生存期 |
account_locked |
enum('N','Y') | 账户是否锁定 |
Create_role_priv |
enum('N','Y') | 创建角色权限 |
Drop_role_priv |
enum('N','Y') | 删除角色权限 |
Password_reuse_history |
smallint unsigned | 密码重用历史 |
Password_reuse_time |
smallint unsigned | 密码重用时间 |
Password_require_current |
enum('N','Y') | 是否需要当前密码 |
User_attributes |
json | 用户属性 |
本文来自博客园,作者:chao_xiong,转载请注明原文链接:https://www.cnblogs.com/chao-xiong/p/19214513

浙公网安备 33010602011771号