MySQL 用户管理详解:创建、权限设置、远程访问与安全优化(码农资讯网)
1. MySQL 用户管理基础
在 MySQL 中,所有的用户信息存储在 mysql.user 表中。可以使用以下命令查询现有的用户:
SELECT User, Host FROM mysql.user;
查询结果示例
+------------+-----------+| User | Host | +------------+-----------+| root | localhost | | dev_user | % | | admin | 192.168.1.10 | | test_user | 127.0.0.1 | +------------+-----------+
- User:MySQL 用户名 
- Host:该用户允许访问 MySQL 服务器的来源 
- localhost:仅允许本机访问
- %:允许从 任意 IP 远程访问
- 192.168.1.10:仅允许从该 IP 访问
2. 创建 MySQL 用户
2.1 创建本地用户(仅限本机访问)
CREATE USER 'local_user'@'localhost' IDENTIFIED BY 'password123';
- local_user:新用户名称
- localhost:该用户只能从 本机 访问 MySQL
- password123:用户的登录密码
2.2 创建远程访问用户
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'password456';
- remote_user:新用户名称
- %:允许从 任何 IP 地址 访问(远程连接)
- password456:用户的密码
安全建议:远程用户的
Host最好指定为具体的 IP,而不是%,这样可以提高安全性。例如:
CREATE USER 'secure_user'@'192.168.1.100' IDENTIFIED BY 'securePass';
3. 授权 MySQL 用户权限
用户创建后,默认没有任何权限,需要手动赋予权限。
3.1 赋予用户所有权限
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%';
- *.*:表示该用户可以访问所有数据库和所有表
- ALL PRIVILEGES:授予所有权限
3.2 仅授予某个数据库的权限
GRANT ALL PRIVILEGES ON my_database.* TO 'dev_user'@'localhost';
- my_database.*:只允许访问- my_database这个数据库
3.3 赋予常见权限
GRANT SELECT, INSERT, UPDATE, DELETE ON my_database.* TO 'test_user'@'%';
- SELECT:允许查询数据
- INSERT:允许插入数据
- UPDATE:允许修改数据
- DELETE:允许删除数据
3.4 刷新权限
FLUSH PRIVILEGES;
- 让权限变更立即生效 
4. 修改 MySQL 用户密码
4.1 修改用户密码(推荐方法)
ALTER USER 'dev_user'@'localhost' IDENTIFIED BY 'new_password';
4.2 旧版本 MySQL 修改密码方法
SET PASSWORD FOR 'dev_user'@'localhost' = PASSWORD('new_password');4.3 忘记 root 密码的解决方法
如果 root 用户密码丢失,可以通过 跳过权限验证 方式重置:
sudo systemctl stop mysql sudo mysqld_safe --skip-grant-tables &
然后执行:
UPDATE mysql.user SET authentication_string=PASSWORD('new_root_password') WHERE User='root';
FLUSH PRIVILEGES;重启 MySQL:
sudo systemctl restart mysql
5. 允许 MySQL 远程访问
如果需要远程访问 MySQL,除了创建远程用户,还需要修改 MySQL 配置文件。
5.1 修改 mysqld.cnf 配置
编辑 MySQL 配置文件:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
找到:
bind-address = 127.0.0.1
修改为:
bind-address = 0.0.0.0
然后 重启 MySQL:
sudo systemctl restart mysql
5.2 开放 3306 端口
Ubuntu/Debian(UFW 防火墙)
sudo ufw allow 3306/tcp sudo ufw reload
CentOS(firewalld 防火墙)
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent sudo firewall-cmd --reload
5.3 远程连接 MySQL
在另一台电脑上,使用以下命令连接 MySQL:
mysql -u remote_user -p -h 服务器IP -P 3306
例如:
mysql -u remote_user -p -h 192.168.1.100 -P 3306
6. 删除 MySQL 用户
6.1 删除指定用户
DROP USER 'test_user'@'%'; FLUSH PRIVILEGES;
6.2 查看是否删除成功
SELECT User, Host FROM mysql.user;
7. MySQL 用户管理常见问题
问题 1:远程访问 MySQL 被拒绝
ERROR 1130 (HY000): Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server
解决方案:
- 确保 - bind-address设为- 0.0.0.0
- 创建远程访问用户 
- 防火墙放行 3306 端口 
总结
- 查看用户: - SELECT User, Host FROM mysql.user;
- 创建用户: - CREATE USER 'user'@'host' IDENTIFIED BY 'password';
- 赋予权限: - GRANT 权限 ON 数据库.* TO 'user'@'host';
- 修改密码: - ALTER USER 'user'@'host' IDENTIFIED BY 'new_pass';
- 允许远程访问: 
- 修改 - bind-address
- 放行 3306 端口 
- 删除用户: - DROP USER 'user'@'host';
按照本教程,你可以轻松管理 MySQL 用户,保障数据库安全!🚀 更多技术教程请关注「码农资讯网」!
1、部分文章来源于网络,仅作为参考。 2、如果网站中图片和文字侵犯了您的版权,请联系1943759704@qq.com处理!





