linux下远程访问Mysql

第一步: 激活网络设置
你需要编辑mysql配置文件my.cnf.
通常状况,my.cnf放置于在以下目录:
/etc/mysql/my.cnf (Debian linux)
/etc/my.cnf (Red Hat Linux/Fedora Linux)
/var/db/mysql/my.cnf (FreeBSD)
然后用vi编辑my.cnf,修改内容从以下行:
[mysqld]
你所需要:
1. 确保skip-networking被删除或者屏蔽,否则不支持TCP/IP 访问
2. 增加行bind-address = ip,替代ip为你的服务器地址
修改后,配置为:
[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 = 65.55.55.2
# skip-networking
....
..
保存并关闭配置文件
重启mysql服务器:# /etc/init.d/mysql restart
 
第二步: 授权
方法一:
例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。
GRANT ALL PRIVILEGES ON *.* TO myuser@'%'   IDENTIFIED BY 'mypassword'   WITH GRANT OPTION;
FLUSH     PRIVILEGES;
如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使用mypassword作为密码
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3'     IDENTIFIED BY 'mypassword'   WITH GRANT OPTION; 
  FLUSH     PRIVILEGES;
#################################
开启Mysql数据库的远程连接权限:
grant all privileges on *.* to 'root' @'%' identified by 'wrx123';
flush privileges;
 
方法二:

use mysql;

update db set host = '%' where user = '用户名'; (如果写成 host=localhost 那此用户就不具有远程访问权限)

FLUSH PRIVILEGES;

 

第三步:  配置防火墙

如果系统装有防火墙iptables,得设置下

修改防火墙配置文件:
vi /etc/sysconfig/iptables
增加下面一行:
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT
如果想开通21等端口,只需要将3306换成21等要开放的端口就可以了。
附:iptables
==============================================
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp –icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp –dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp –dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT –reject-with icmp-host-prohibited
COMMIT

================================================
配置后,重新启动 iptable

service iptables restart

这时就可以从外网访问Mysql了。

第四步 测试
From remote system type command:

$ mysql -u webadmin –h ip –p



出处:http://blog.csdn.net/frankyanchen/article/details/7898381

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux远程访问MySQL数据库通常涉及以下几个步骤: 1. **安装MySQL客户端**:如果你的系统上还没有安装MySQL命令行工具,首先需要安装。对于大多数Linux发行版,可以使用包管理器,如apt-get(Ubuntu/Debian)、yum(CentOS/RHEL)等来安装,例如: ```sh sudo apt-get install mysql-client ``` 2. **启动MySQL服务**:如果MySQL未自动启动,确保它正在运行: ```sh sudo service mysql start (or systemctl start mysql) ``` 3. **配置MySQL远程连接**:打开MySQL的配置文件(通常是`/etc/mysql/my.cnf`),查找`bind-address`或`[mysqld]`部分,将`bind-address = 127.0.0.1`更改为`bind-address = 0.0.0.0`,允许所有IP地址连接。然后重启MySQL以应用更改: ``` sudo nano /etc/mysql/my.cnf sudo service mysql restart ``` 或者使用systemctl: ```sh sudo systemctl edit mysql | grep bind-address -i sudo systemctl restart mysql ``` 4. **创建用户和权限**:登录到MySQL作为root用户,创建一个新的远程访问账户并分配合适的权限,例如: ```sql CREATE USER 'remote_user'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%'; FLUSH PRIVILEGES; ``` 将`remote_user`替换为你想要的用户名,`password`替换为密码。 5. **测试连接**:退出MySQL,然后通过SSH或其他网络工具从远程机器尝试连接: ```sh mysql -u remote_user -p ``` 6. **防火墙设置**:确认服务器防火墙允许MySQL的默认端口(3306)来自外部连接,如果没有开放,你需要添加相应的规则。在Ubuntu上可以这样操作: ```sh sudo ufw allow from any to any port 3306 sudo ufw enable ``` 完成以上步骤后,你应该能够从远程Linux机器成功连接到MySQL了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值