企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
**remote access** 默认mysql的用户是没有远程访问的权限的,因此当程序跟数据库不在同一台服务器上时,我们需要开启mysql的远程访问权限。 MySQL开启远程访问 方法1. 修改配置文件 ~~~ #需要root权限,配置文件是只读的 $ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf #往下翻,注释掉这一行,保存退出 # bind-address = 127.0.0.1 #重启服务 $ service mysql restart; ~~~ 方法2. 授权法(修改用户权限)。 修改mysql库的user表,将host项,从localhost改为%。%这里表示的是允许任意host访问,如果只允许某一个ip访问,则可改为相应的ip,比如可以将localhost改为192.168.1.123,这表示只允许局域网的192.168.1.123这个ip远程访问mysql。 ~~~ mysql> use mysql; mysql> update user set host = '%' where user = 'root'; #允许所有用户远程访问,修改用户名和密码为你自己的 mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION; #允许单个ip 修改用户名和密码为你自己的 mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'192.168.1.123' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION; #刷新权限 mysql> FLUSH PRIVILEGES; #重启服务 $ service mysqld restart ~~~ >[info]注:将host字段的值改为%就表示在任何客户端机器上能以root用户登录到mysql服务器,建议在开发时设为%。 >~~~ >update user set host = ’%’ where user = ’root’; >~~~ >这样机器就可以以用户名root及其密码远程访问该机器上的MySql. 如果执行完以上步骤,还是不能远程连接,那么我们需要查看服务器的防火墙是否开启 ~~~ $ service iptables status ~~~ 如果防火墙开启,请关闭 ~~~ $ service iptables stop ~~~ 或者**防火墙开放3306端口** 1、打开防火墙配置文件 ~~~ $ vim /etc/sysconfig/iptables ~~~ 2、增加下面一行 ~~~ -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT ~~~ 3、重启防火墙 ~~~ $ service iptables restart ~~~ 注意:增加的开放3306端口的语句一定要在icmp-host-prohibited之前 到此就可以远程连接了!