MySQL数据库远程连接
参考:
http://www.jb51.net/article/24508.htm
http://www.linuxdiyf.com/viewarticle.php?id=84249
http://www.linuxdiyf.com/viewarticle.php?id=84249
平台:Linux与win7
方法一:
Linux终端下与WIN7终端下输入的下面指令:
# mysql -h localhost -u root
-p //localhost与IP:127.0.0.1等价的
//localhost可用mysql服务器IP替换
Mysql> use mysql;//必须写这句,不然会出现erro信息:no database select
Mysql> update user set host=’%’where user=’root’;
使用update 后,出现erro:
ERRO 1062(23000):Duplicate entry ‘%-roo’for key ‘PRIMARY’
从duplicate entry:重复录入,可能mysql数据库中已经包含了’%’,用指令select查看下如下行代码。
Mysql> select host,user from user;//查看主机(ip)与用户
或select host from user where user=’root’
Mysql> flush privileges;
Mysql> exit
# /etc/init.d/mysql restart //重起服务 win7不用这句,直接运行 //mysqld.exe就行了
方法二:
1、在控制台执行 # mysql -h localhost -u root -p mysql
//这个命令的第一个mysql是执行命令
//第二个mysql是系统数据名称,不一样的。
2 mysql> GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘
IDENTIFIED BY ‘201167‘ WITH GRANT OPTION; //withgrant option可不用
注示:root‘@‘%‘ 可以这样理解:root是用户名,%是主机名或IP地址,这里的%代表任意主机或IP地址,你也可替换成任意其它用户名或指定唯一的IP地址;‘201167‘ 是给授权用户指定的登录数据库的密码;另外需要说明一点的是我这里的都是授权所有权限,可以指定部分权限,GRANT具体操作详情 见:http://dev.mysql.com/doc/refman/5.1/en/grant.html
3.mysql>FLUSH
PRIVILEGES ;
4.mysql> select host, user from user; //不放心的话检查一
//用户表里的内容
Linux平台下方法三:
默认状况下,出于安全考虑,mysql数据库屏蔽了远程访问功能。 然而在许多状况下,你需要在家或者从web程序去访问远端数据库服务器,这就相当麻烦了。
第一步: 激活网络设置
你需要编辑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)
/etc/mysql/my.cnf
# vi /etc/my.cnf
然后用vi编辑my.cnf,修改内容从以下行:
[mysqld]
你所需要:
1. 确保skip-networking被删除或者屏蔽,否则不支持TCP/IP 访问
2. 增加行bind-address
= 65.55.55.2,替代65.55.55.2 为你的服务器地址
修改后,配置为:
[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
第二步, 给远程ip授访问权限
看方法一或二。
第三步: 执行exit命令退出mysql环境,
第四步 测试
$ mysql -u root–h
192.168.174.146 –p
注解;
root为mysql的用户名
-h IP or 域名: 65.55.55.2 is MySQL server IP address or hostname (FQDN)
-p :
密码提示
你也可以使用telnet去连接远程的3306端口
$ telnet 192.168.174.146 3306
笔者注:
这篇文章解决了我在suse环境中的mysql远程访问问题。但是实际操作中,my.cnf似乎并不是特别重要。在我的操作中,my.cnf创建和修改没有执行(忽略第一步)。最重要的步骤应该是第二步
GRANT ALL ON *.* TO‘root’@‘192.168.174.146‘ IDENTIFIED BY
‘‘;
其中b2c为所要访问的远程数据库名,5.179.201.86为mysql客户端主机的ip地址,也就是你的机器ip地址。
有个小细节需要注意。如果你的服务器装了防火墙的话,需要打开3306的访问,否则也会连接不上。