b连接远程mysql字符串_远程链接MySQL(MariaDB)数据库

本文介绍了如何在Windows客户端通过网络连接远程MySQL(MariaDB)数据库,包括检查网络连通性、设置数据库访问权限、解决链接错误,以及配置服务器以允许远程访问。
摘要由CSDN通过智能技术生成

网络环境:css

MySQL(MariaDB)服务器的操做系统为 CentOS 7

MySQL(MariaDB)服务器IP:172.16.230.15

客户端操做系统为 Windows 2008 R2

客户主机IP:172.16.230.200

在实际的工程或项目开发中,若是数据库服务器被放置在机房或机房的机柜中,开发或工程人员只能经过网络远程链接数据库进行操做时就须要用到我下面介绍的内容了。拓扑图以下:html

074d3e9123814641b663a23f.html

一、客户端远程链接数据库须要先安装mysql的客户端工具,mysql的客户端工具网上有不少,你们能够百度一下。mysql

二、查看windows 2008的IP地址,看是否和服务器在同一网段(即便不在同一网段,只要双方彼此可以ping通就OK),查看方法以下:web

C:\mysql5628\bin>ipconfig

Windows IP 配置

以太网适配器 本地链接:

链接特定的 DNS 后缀 . . . . . . . :

本地连接 IPv6 地址. . . . . . . . : fe80::ecba:5cc1:388a:edd2%11

IPv4 地址 . . . . . . . . . . . . : 172.16.230.200

子网掩码  . . . . . . . . . . . . : 255.255.255.0

默认网关. . . . . . . . . . . . . : 172.16.230.2

三、在客户端测试与数据库服务器的连通性:sql

C:\mysql5628\bin>ping 172.16.230.15

正在 Ping 172.16.230.15 具备 32 字节的数据:

来自 172.16.230.15的回复: 字节=32 时间<1ms TTL=64

来自 172.16.230.15的回复: 字节=32 时间<1ms TTL=64

来自 172.16.230.15 的回复: 字节=32 时间<1ms TTL=64

来自 172.16.230.15 的回复: 字节=32 时间<1ms TTL=64

172.16.230.15 的 Ping 统计信息:

数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),

往返行程的估计时间(以毫秒为单位):

最短 = 0ms,最长 = 0ms,平均 = 0ms

以上反馈信息说明客户机与服务器之间的网络连通是没有问题的。shell

四、客户端使用用户名和密码尝试经过网络远程链接数据库数据库

C:\mysql5628\bin>mysql -h 172.16.230.15 -u root -p

Enter password: **********

ERROR 2003 (HY000): Can't connect to MySQL server on '172.16.230.15' (10060)

这个报错说明,数据库不容许除了本机外的任何主机链接数据库。为了解决这个问题,咱们须要在服务器上进行访问权限的更改来容许其余主机也能访问该数据库。windows

五、如下两步都须要到服务器上操做安全

(1)为安全起见,给数据库的root用户设置密码服务器

[root@localhost ~]# mysql -u root -p  //利用root用户登陆数据库

Enter password:     //新安装的数据库是没有密码的,这里直接按下回车就行

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 4

Server version: 5.5.52-MariaDB MariaDB Server

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> set password for 'root'@'localhost' = password('mycisco.cc');

//为root用户设置的密码是mycisco.cc,注意:第二个password和左括号之间是不能有空格的。

Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]>

这样,用户要想登陆数据库就必须输入正确的用户名和密码才行。您可在提示符下输入exit退出数据库,而后再从新登陆试一试就知道新设置的密码已经生效了。

(2)为其余主机远程链接数据库开放访问权限,从新登入数据库:

MariaDB [(none)]> use mysql;   //选择mysql数据库进行操做

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

MariaDB [mysql]> select user,password,host from user;  //查看user,password,host这三个字段的权限分配状况

+------+-------------------------------------------+-----------------------+

| user | password                                                                       | host                     |

+------+-------------------------------------------+-----------------------+

| root | *139EBD293A149D3C25DBD676D882BCBA5A00223E | localhost             |

| root |                                                                                        | localhost.localdomain |

| root |                                                                                        | 127.0.0.1             |

| root |                                                                                        | ::1                   |

|      |                                                                                           | localhost             |

|      |                                                                                           | localhost.localdomain |

+------+-------------------------------------------+-----------------------+

6 rows in set (0.00 sec)

//经过以上输出能够看出数据库默认只容许用户root在本地服务器(localhost)上登陆,不容许其余主机远程链接。

MariaDB [mysql]> grant all privileges on *.* to root@"%" identified by "mycisco.cc";

//上面这条语句将容许用户root使用密码(mycisco.cc)在任何主机上链接该数据库,并赋予该用户全部权限。

Query OK, 0 rows affected (0.01 sec)

最后配置好权限以后不该该忘记刷新使之生效

MariaDB [mysql]> flush privileges;

Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> select user,password,host from user;

+------+-------------------------------------------+-----------------------+

| user | password                                  | host                         |

+------+-------------------------------------------+-----------------------+

| root | *139EBD293A149D3C25DBD676D882BCBA5A00223E | localhost             |

| root |                                                                                        | localhost.localdomain |

| root |                                                                                        | 127.0.0.1             |

| root |                                                                                        | ::1                   |

|      |                                                                                           | localhost             |

|      |                                                                                           | localhost.localdomain |

| root | *139EBD293A149D3C25DBD676D882BCBA5A00223E | %          |  //这行中的“%”就意味着任何主机都被容许链接数据库

+------+-------------------------------------------+-----------------------+

7 rows in set (0.00 sec)

MariaDB [mysql]>

这样数据库的访问权限就设置好了。

六、回到客户端再尝试链接,如图1,显示链接数据库成功。

074d3e9123814641b663a23f.html

注:若是链接不成功,多是服务器中的防火墙没有关闭,可经过指令systemctl disable firewalld关闭firewalld 并重启系统。

MariaDB 与普通的MySQL数据库的一个不一样在于它的配置文件不止一个,它将不一样的数据放入到不一样的配置文件中,以前的/etc/mysql/my.cnf内容以下:

074d3e9123814641b663a23f.html

从文件中的注释上来看,它主要有这么几个配置文件

/etc/mysql/mariadb.cnf 默认配置文件,

/etc/mysql/conf.d/*.cnf 设置全局项的文件

“/etc/mysql/mariadb.conf.d/*.cnf” 设置与MariaDB相关的信息

“~/.my.cnf” 设置该帐户对应的信息

这也就是为何咱们在my.cnf作相关设置有的时候不起做用(可能在其余配置文件中有相同的项,MySQL最终采用的是另一个文件中的设置)。

根据官方的说法, MariaDB为了提升安全性,默认只监听127.0.0.1中的3306端口而且禁止了远程的TCP连接,咱们能够经过下面两步来开启MySQL的远程服务

注释掉skip-networking选项来开启远程访问.

注释bind-address项,该项表示运行哪些IP地址的机器链接,容许全部远程的机器链接,可是配置文件这么多,这两选项究竟在哪呢?这个时候使用grep在/etc/mysql/目录中的全部文件中递归查找,看哪一个文件中含有这个字符串

咱们输入:

grep -rn "skip-networking" *

结果以下:

074d3e9123814641b663a23f.html

十分幸运的是这两项都在同一文件中(我本身的是没有skip-networking项)

咱们打开文件/etc/mysql/mariadb.conf.d/50-server.cnf,注释掉bind-address项,以下:

074d3e9123814641b663a23f.html

只有这些仍然不够,咱们只是开启了MySQL监听远程链接的选项,接下来须要给对应的MySQL帐户分配权限,容许使用该帐户远程链接到MySQL

输入

select User, host from mysql.user;

查看用户帐号信息:

074d3e9123814641b663a23f.html

root帐户中的host项是localhost表示该帐号只能进行本地登陆,咱们须要修改权限,输入命令:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

修改远程链接密码

先进入到mysql

use mysql

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '新密码' WITH GRANT OPTION;

修改权限。%表示针对全部IP,password表示将用这个密码登陆root用户,若是想只让某个IP段的主机链接,能够修改成

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.100.%' IDENTIFIED BY 'my-new-password' WITH GRANT OPTION;

注意:此时远程链接的密码可能与你在本地登陆时的密码不一样了,主要看你在IDENTIFIED BY后面给了什么密码

具体的请参考GRANT命令

最后配置好权限以后不该该忘记刷新使之生效

FLUSH PRIVILEGES;

保存更改。再看看用户信息:

074d3e9123814641b663a23f.html

这个时候发现相比以前多了一项,它的host项是%,这个时候说明配置成功了,咱们能够用该帐号进行远程访问了

输入shell service mysql restart重启远程服务器,测试一下:

074d3e9123814641b663a23f.html

若是这些都作完了,仍是不能链接,能够看一下端口是否是被防火墙拦截了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值