要在mysql中开启远程访问权限,需完成以下步骤:
1. 登录mysql服务器
mysql -u root -p # 输入root密码进入mysql命令行
2. 创建允许远程访问的用户(或修改现有用户)
方案1:创建新用户并授权
-- 创建用户('username'替换为用户名,'password'替换为密码,'remote_ip'替换为远程客户端ip或'%'允许所有ip) create user 'username'@'remote_ip' identified by 'password'; -- 授予权限(建议按需授权,此处示例授予所有数据库的完全权限) grant all privileges on *.* to 'username'@'remote_ip' with grant option; -- 刷新权限 flush privileges;
方案2:修改root用户允许远程访问(不推荐,存在安全风险)
-- 更新root用户的host为'%'(允许任意ip) update mysql.user set host='%' where user='root' and host='localhost'; -- 刷新权限 flush privileges;
3. 修改mysql配置文件
找到配置文件:
linux:
/etc/mysql/mysql.conf.d/mysqld.cnf
或/etc/my.cnf
windows:
c:\programdata\mysql\mysql server x.x\my.ini
修改配置:
[mysqld] bind-address = 0.0.0.0 # 允许所有ip连接(默认值为127.0.0.1,仅限本地)
4. 重启mysql服务
linux:
sudo systemctl restart mysql # ubuntu/debian sudo systemctl restart mysqld # centos/rhel
windows:
通过服务管理器重启 "mysqlxx" 服务。
5. 开放防火墙端口(默认3306)
linux (ufw):
sudo ufw allow 3306/tcp sudo ufw reload
linux (firewalld):
sudo firewall-cmd --permanent --add-port=3306/tcp sudo firewall-cmd --reload
windows:
控制面板 → windows defender 防火墙 → 高级设置 → 入站规则 → 新建规则(端口3306)。
6. 验证远程连接
# 从另一台机器测试连接(替换ip、用户名、密码) mysql -h <mysql_server_ip> -u username -p
常见问题排查
1. 错误:error 2003 (hy000): can't connect to mysql server
原因:防火墙未放行端口或mysql未监听外网。
解决:
# 检查端口监听状态 netstat -tuln | grep 3306 # 应显示:0.0.0.0:3306 或 :::3306
2. 错误:error 1130 (hy000): host 'xxx.xxx.xxx.xxx' is not allowed
原因:用户权限未正确配置。
解决:
-- 检查用户权限 select host, user from mysql.user; -- 确保目标ip或'%'存在授权记录
3. 错误:error 1045 (28000): access denied
原因:密码错误或用户无权限。
解决:确认用户名、密码及授权ip是否匹配。
安全建议
最小权限原则:按需授予权限(如
select, insert
而非all privileges
)。限制访问ip:避免使用
'%'
,指定具体ip或网段。启用ssl加密(可选):
alter user 'username'@'remote_ip' require ssl;
通过以上步骤,即可安全地开启mysql远程访问权限。
总结
到此这篇关于mysql开启远程访问权限的文章就介绍到这了,更多相关mysql开启远程访问权限内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论