远程访问MySQL数据库
Linux版本的MySQL数据库缺省不允许从远程访问(Windows版本在安装时可以进行选择),因此我们需要简单修改一下来放开这个限制。
通过软件中心安装MySQL,这没有什么好介绍的。网上有些这方面的介绍,不过中文版本的基本上都有些错误,估计大部分都只是转载,作者并没有真正尝试。
以下步骤基于Ubuntu版本。
step1:mysql> grant all privileges on *.* to 'root'@'%' identified by '1234';
其中,‘1234’是指密码,‘root‘是指远程访问的账户名。’%’是指允许从任何一个远程计算机访问。’*.*’是指所有数据库、所有表。
step2:mysql> flush privileges;
step3:修改/etc/mysql/my.cnf文件,注释掉以下行:
bind-address = 127.0.0.1
step4: 重启MySQL服务
sudo service mysql restart
完成上述步骤后,就可以用root账户,以‘1234’为password,从任何一个远端计算机上登录并访问MySQL数据库了。
2018-09-29 更新, Debian 9之后又有了很多变化:
最大的变化莫过于MariaDB正式替换了MySQL,当然mariadb的各项操作、库(尤其是基本的操作和基本库)与MySQL还是保持兼容。同时,配置文件变更为 /etc/mysql/mariadb.conf.d/50-server.cnf。
在完成上述那些操作后,在其他用户的shell里,使用root账号登录MariaDB,会提示以下信息:
ERROR 1698 (28000): Access denied for user ‘root’@’localhost’
而直接在root用户的shell里登录是没有问题的。这种情况下,root要登录进MariaDB后,选择“mysql”数据库,然后
update user set password=password('1234') where user='root' and host='localhost';
此时设置从本机登录时,root用户的密码。
update user set plugin='' where user='root'; flush privileges;
清除root用户的plugin字段,允许root用户从其他shell里登录。
另外要注意的是,重新启动MariaDB,命令也有变换,采用 systemctl 进行操作:
systemctl stop mariadb.service systemctl start mariadb.service