MySQL 创建用户主要通过
CREATE USER语句完成,配合
GRANT授予对应权限。从 MySQL 5.7 开始推荐使用该方式,安全且语义清晰。
使用 CREATE USER 创建新用户
基本语法如下(以用户名
app_user、密码
secure123、仅允许本地登录为例):
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'secure123';
'app_user'@'localhost'表示用户只能从本机连接;若需远程访问,把
localhost换成
'%'(任意主机)或具体 IP,如
'192.168.1.100'密码必须用单引号包裹,且建议使用强密码 执行后用户仅存在,但无任何数据库操作权限
用 GRANT 授权给新用户
创建用户后需显式授权,例如赋予对数据库
myapp_db的全部权限:
GRANT ALL PRIVILEGES ON myapp_db.* TO 'app_user'@'localhost';
ALL PRIVILEGES可替换为更具体的权限,如
SELECT, INSERT, UPDATE
myapp_db.*表示该库下所有表;也可指定表,如
myapp_db.users授权后必须执行
FLUSH PRIVILEGES;刷新权限表(部分高版本 MySQL 在
GRANT后自动刷新,但显式执行更稳妥)
一步创建并授权(兼容旧习惯)
MySQL 5.7 之前常用
GRANT直接创建用户,现在仍支持:
GRANT SELECT, INSERT ON myapp_db.orders TO 'report_user'@'%' IDENTIFIED BY 'readonly2024';该语句会自动创建用户(如果不存在),并直接授权 注意:这种方式在严格 SQL 模式或某些部署策略中可能被禁用,建议优先用
CREATE USER + GRANT分步操作 同样需要
FLUSH PRIVILEGES;确保生效
验证与后续管理
创建完成后可登录验证:
mysql -u app_user -p -h 127.0.0.1查看用户列表:
SELECT User, Host FROM mysql.user;查看某用户权限:
SHOW GRANTS FOR 'app_user'@'localhost';修改密码:
ALTER USER 'app_user'@'localhost' IDENTIFIED BY 'newpass123';删除用户:
DROP USER 'app_user'@'localhost';
