连接远程MySQL数据库

使用远程MySQL数据库可以不用在自己的电脑上安装MySQL,并且解决带来多人开发时同步数据库的麻烦。

环境

MySQL Server version: 5.5.40-0ubuntu0.14.04.1 (Ubuntu)

本人使用的是阿里云服务器,3306端口应该是打开的。如果是在亚马逊的服务器上,注意调整防火墙使3306端口打开。

设置MySQL账户远程登录权限

进入MySQL控制台,

mysql -uroot -p

给某个账户远程登录权限,username和password根据具体情况填写。

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

@’%’即表示允许从任何地方登陆,也可将%改为IP地址。

再输入下面的命令,是权限修改生效

FLUSH PRIVILEGES

解除本地绑定

打开mysql的配置文件:

/etc/mysql/my.ini

注释掉下面这一行

bind-address           = 127.0.0.1

然后重启MySQL:

sudo service mysql restart

如果出现下面错误,那是因为没有sudo使用root权限,虽然报错看起来像似没有mysql这个服务似的。

stop: Unknown job: mysql
start: Unknown job: mysql

解决远程访问慢的问题

经过以上步骤,应该能远程访问数据库了,但是速度很慢。需要取消DNS反向解析:在mysql配置文件my.ini中的[mysqld]后加入一行:

[mysqld]
skip-name-resolve

然后重启MySQL。

测试一下

使用MySQL命令行登录数据库:用户名、密码、远程IP地址(注意替换)

mysql -uxxxx -pxxxx -h 192.168.2.100 -P 3306

试试看能否登录成功。

如果使用Codeigniter连接数据库,修改database.php配置文件,直接填远程数据库地址和用户名密码即可。

$db['default']['hostname'] = 'example.com';
$db['default']['username'] = 'root';
$db['default']['password'] = 'root';
$db['default']['database'] = 'wordpress';