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 用户属性
posted @ 2025-11-13 14:35  chao_xiong  阅读(4)  评论(0)    收藏  举报