MySQL数据库远程连接

时间:2021-07-23 20:52:14

12.00

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

注:mysql是mysql数据库命令终端提示符、

方法一:

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的访问,否则也会连接不上。

Normal
0

7.8 磅
0
2

false
false
false

EN-US
ZH-CN
X-NONE

MicrosoftInternetExplorer4

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman","serif";}