为 MariaDB 配置远程访问权限

MariaDB为了安全起见,默认情况下绑定ip( 127.0.0.1)。老版本的mysql可能通过使用skip-networking的方式关闭TCP/IP连接。在修改配置之前,需要了解这两者的工作原理:

  • skip-networking很简单。就是告诉MariaDB (or MySQL) 禁用 TCP/IP 连接。
  • 绑定ip地址 稍微难理解一些。一个服务器通常情况下会有两个或以上的网络端口(虽然有时候根本用不到)帮助我们连接到network,最常见的两个网络端口是 LoopbackNetwork Interface Card (NIC)。MariaDB默认情况下使用loopback,这样远程客户端就不能通过TCP端口连接MariaDB服务器。当然如果你想让远程可以通过TCP端口连接到MaridDB服务器,明显loopback的方式是不可取的,所以你要注释掉绑定ip的设置。(如果绑定ip地址的配置被注释掉,MariaDB只能支持一个地址(0.0.0.0 ))。

找到默认配置文件

为了让 MySQL 能够接受远程连接,你需要修改你的默认配置文件。

一般情况下,默认配置文件能在下面的路径找到:

  * /etc/my.cnf                              (*nix/BSD)
  * $MYSQL_HOME/my.cnf                       (*nix/BSD) *Most Notably /etc/mysql/my.cnf
  * SYSCONFDIR/my.cnf                        (*nix/BSD)
  * WINDIR\my.ini, WINDIR\my.cnf             (Windows)
  * C:\my.ini, C:\my.cnf                     (Windows)
  * INSTALLDIR\my.ini, INSTALLDIR\my.cnf     (Windows)

编辑默认配置文件

一旦你找到这些默认文件,用编辑器打开,找到[mysqld]这行:

 [mysqld]
    ...
    skip-networking
    ...
    bind-address = <some ip-address>
    ...

(文件中上下行的顺序不存在要求。)

用#号注释掉部分内容,如下图所示:

 [mysqld]
    ...
    #skip-networking
    ...
    #bind-address = <some ip-address>
    ...

保持刚刚修改的文件,重启程序或者服务器。

给远程主机给予连接用户

现在服务器已经可以允许远程主机连接,接下来要做的就是添加一个用户(MariaDB定义用户格式类似:user'@'host),让一个不是localhost的主机连接,最好不同的用户应该有不同的权限和密码。

创建新用户:

  • 用命名行的方式或者你喜欢的图形界面登陆到MariaDB(登陆后得到类似如下信息:)
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 36
Server version: 5.5.28-MariaDB-mariadb1~lucid mariadb.org binary distribution

Copyright (c) 2000, 2012, Oracle, Monty Program Ab and others.

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

MariaDB [(none)]> 
  • 如果你有兴趣用已经存在远程用户,可以用下面的命令查询:
MariaDB [(none)]> SELECT User, Host FROM mysql.user WHERE Host <> 'localhost';
+--------+-----------+
| User   | Host      |
+--------+-----------+
| daniel | %         |
| root   | 127.0.0.1 |
| root   | ::1       |
| root   | gandalf   |
+--------+-----------+
4 rows in set (0.00 sec)

MariaDB [(none)]> 

(如果MariaDB是新安装的,显然不会有结果输出)

你有很多工作要做,最重要的事情都给你列出来了:

  • 列出权限
  • 列出需要操作的数据库和table
  • 用户名
  • 连接主机
  • 用户密码

通常都喜欢创建root用户连接服务器,所以我们就这么做了。但是这个root用户的连接ip地址在 192.168.100.0/24内。因为如果对所有ip地址开放,这并不是一个聪明的决定。

MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.100.%' IDENTIFIED BY 'my-new-password' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]>

(% is a wildcard)

到这里,我们已经创建root用户,并且让这个用户在192.168.100.0/24 地址内能连接到服务器。

更多有关授权的信息,请关注GRANT

警告

  • 如果系统的防火墙开着(or behind a hardware firewall or NAT)你必须放开mysql使用的TCP端口,通常都是3306。
  • 为了撤销这个操作,只要恢复配置文件中的注释内容。

The initial version of this article was copied, with permission, from http://hashmysql.org/wiki/Remote_Clients_Cannot_Connect on 2012-10-30.

Comments

Comments loading...