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
:该用户只能从 本机 访问 MySQLpassword123
:用户的登录密码
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处理!