安全起见,首先为远程连接提供一个数据库。
CREATE DATABASE test DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
目前为止,mysql默认的编码几乎注定了插入中文会出现乱码,不得不在新建一个数据库的时候 SET utf8 COLLATE utf8generalci
然后,新建一个远程用户
CREATE USER test@'%' IDENTIFIED BY '123456';
标准格式:CREATE USER 用户名@'允许连接的ip地址' IDENTIFIED BY '密码'。 其中,%代表允许所有地址连接。
然后给新用户授权
GRANT ALL ON test.* TO 'test'@'%’;
标准格式: GRANT 权限 ON 数据库名称.表名 TO '用户'@'允许连接的地址’;
目前为止,我们已经有了一个可以远程连接操作mysql的用户。但是mysql的默认是服务绑定在localhost上,我们必须去修改一下。在Ubuntu下面,这个默认配置文件是/etc/mysql/my.cnf。
vim /etc/mysql/my.cnf
去把bind-address那一行注释掉,虽然理论上改成bind-address= 0.0.0.0就可以了,但是保险起见,还是注释掉比较好
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#===king setting allow remote===
# bind-address = 0.0.0.0
#
# * Fine Tuning
#
key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
接下来就是防火墙的问题了,Ubuntu下面的端口访问是被ufw管理的。具体教程在下面两个链接:
http://wiki.ubuntu.org.cn/Ufw%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97
http://www.cnblogs.com/ylan2009/articles/2321136.html
我自己是卡在这儿一个星期,妈的,每次连接都是60错误……莫名其妙。后来先重启了一下ufw就莫名其妙好了╮(╯▽╰)╭并没有添加任何特例之类的_(:зゝ∠).不过ufw一般状态下是不被激活的,一旦激活就会影响正常主机的远程登陆,必须还要开启一下22端口。
至于远程连接的客户端,可以用mysql官方可视化的workbench,也可以用命令行
mysql -h 111.1.1.1 -P 3306 -u test -p123456
标准格式:mysql -h ip地址 -P 端口号 -u 用户名 -p密码
别忘了密码和-p是紧跟着的(:зゝ∠)