centos中如何开启mysql的远程访问?
Posted
技术标签:
【中文标题】centos中如何开启mysql的远程访问?【英文标题】:How to enable remote access of mysql in centos? 【发布时间】:2014-07-07 04:14:11 【问题描述】:我的 apache 运行在 8113
端口而不是 80
。
我想远程访问我的 mysql 数据库。我已经尝试了以下步骤。
Bind-address XXX.XX.XX.XXX in /etc/my.cnf
Create Database
and run the command
GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'IP' IDENTIFIED BY 'PASSWORD';
但无法连接。我正在使用heidi sql连接。
【问题讨论】:
你需要连接MySQL而不是Apache,MySQL默认监听3306
端口。
我使用端口 3306 连接。但无法连接。
【参考方案1】:
下面编辑 my.cnf:
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
language = /usr/share/mysql/English
bind-address = xxx.xxx.xxx.xxx
# skip-networking
编辑后点击service mysqld restart
登录 mysql 并点击以下查询:
GRANT ALL ON foo.* TO bar@'xxx.xxx.xxx.xxx' IDENTIFIED BY 'PASSWORD';
如果没有输入以下内容,请确保您的 iptables 允许从 3306 连接:
iptables -A INPUT -i lo -p tcp --dport 3306 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 3306 -j ACCEPT
【讨论】:
最后一个命令不起作用。它说 'iptables v1.4.7: Can't use -i with OUTPUT' 完全删除 -i 参数,因为 OUTPUT 规则不需要它【参考方案2】:/etc/my.cnf 中的绑定地址 XXX.XX.XX.XXX
评论行:
跳过网络
或
跳过外部锁定
编辑后点击service mysqld restart
登录 mysql 并点击以下查询:
GRANT ALL PRIVILEGES ON dbname.* TO 'username'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
quit;
添加防火墙规则:
iptables -I INPUT -i eth0 -p tcp --destination-port 3306 -j ACCEPT
【讨论】:
【参考方案3】:如果允许 IP 到 mysql 服务器 linux 机器。您可以执行以下命令--
nano /etc/httpd/conf.d/phpMyAdmin.conf and add Desired IP.
<Directory /usr/share/phpMyAdmin/>
AddDefaultCharset UTF-8
Order allow,deny
allow from all
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
Require ip 192.168.9.1(Desired IP)
</RequireAny>
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
#Allow from All
Allow from 192.168.9.1(Desired IP)
</IfModule>
更新后,请使用以下命令重新启动--
sudo systemctl restart httpd.service
【讨论】:
以上是关于centos中如何开启mysql的远程访问?的主要内容,如果未能解决你的问题,请参考以下文章