在Ubuntu系统中,需先通过终端登录MySQL服务器。使用root用户(MySQL默认管理员)登录,命令如下:
sudo mysql -u root -p
输入root用户的密码后,进入MySQL命令行界面(显示mysql>
提示符)。
使用CREATE USER
语句创建用户,需指定用户名、主机(登录来源)和密码。常见场景:
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'StrongPassword123!';
CREATE USER 'myuser'@'%' IDENTIFIED BY 'StrongPassword123!';
CREATE USER 'user1'@'localhost' IDENTIFIED BY 'Pass1', 'user2'@'192.168.1.100' IDENTIFIED BY 'Pass2';
注:
localhost
表示本地连接,%
表示允许从任何IP地址连接。
使用DROP USER
语句彻底删除用户(含其权限):
DROP USER 'myuser'@'localhost';
注:删除用户前需确认该用户无正在进行的操作,避免影响业务。
使用ALTER USER
语句修改用户密码(支持当前用户或指定用户):
ALTER USER USER() IDENTIFIED BY 'NewPassword456!';
ALTER USER 'myuser'@'localhost' IDENTIFIED BY 'NewPassword456!';
注:MySQL 8.0及以上版本推荐使用
mysql_native_password
插件(默认),无需额外配置。
使用以下命令查看MySQL中的所有用户及对应主机:
SELECT User, Host FROM mysql.user;
注:
mysql.user
是MySQL的系统表,存储用户账户信息。
使用GRANT
语句为用户分配权限,语法结构为:
GRANT 权限列表 ON 数据库.表 TO '用户名'@'主机' [IDENTIFIED BY '密码'];
ALL PRIVILEGES
:所有权限(生产环境慎用);SELECT
:查询数据;INSERT
:插入数据;UPDATE
:更新数据;DELETE
:删除数据;CREATE
/DROP
:创建/删除数据库/表;GRANT OPTION
:允许用户将自己拥有的权限授予其他用户。GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'localhost';
GRANT SELECT, INSERT ON mydatabase.mytable TO 'myuser'@'localhost';
GRANT CREATE ON *.* TO 'admin'@'%';
注:权限生效需执行
FLUSH PRIVILEGES;
(见下文)。
使用SHOW GRANTS
语句查看用户的权限详情:
SHOW GRANTS FOR 'myuser'@'localhost';
示例输出:
GRANT USAGE ON *.* TO 'myuser'@'localhost'
(无权限)或GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'localhost'
(拥有所有权限)。
使用REVOKE
语句撤销用户的特定权限,语法与GRANT
相反:
REVOKE 权限列表 ON 数据库.表 FROM '用户名'@'主机';
REVOKE ALL PRIVILEGES ON mydatabase.* FROM 'myuser'@'localhost';
REVOKE UPDATE ON mydatabase.mytable FROM 'myuser'@'localhost';
注:撤销权限后需执行
FLUSH PRIVILEGES;
使更改生效。
修改权限后,需执行FLUSH PRIVILEGES;
命令使更改立即生效(无需重启MySQL服务):
FLUSH PRIVILEGES;
注:MySQL 8.0及以上版本中,部分操作(如
GRANT
/REVOKE
)会自动刷新权限,但显式执行更安全。
SELECT
,无需ALL PRIVILEGES
)。localhost
改为具体IP地址(如192.168.1.100
)或%
,但需配合防火墙限制访问源。SELECT User, Host FROM mysql.user;
查看用户列表,使用SHOW GRANTS
检查权限,及时删除闲置用户。通过以上步骤,可在Ubuntu系统中高效管理MySQL用户权限,保障数据库安全。