前几天把自己的网站搭建起来之后,调试的时候,直接的Ubuntu的命令行中,对数据库进行了修改。
后来觉得太不方便了,所以就打算使用本机的可视化界面操作数据库,没想到发生了一些问题。
为了帮助其他的同学我把问题和解决方案放在这里。
系统:阿里云服务器(Ubuntu系统)
软件:Navicat(http://navicatformysql.en.softonic.com/)
首先下载和安装Navicat,然后点击链接,建立新的链接。配置链接信息。
问题:当我测试连接的时候出现了,如下图得问题。
解决方案:允许ubuntu下MySQL远程连接 。假设用户为root,密码为root,数据库为wsyw126
具体过程如下:
1、在目标服务器上(121.42.186.99),修改mysql的my.cnf文件:
vim /etc/mysql/my.cnf
2、注释掉bind-address,屏蔽其只对本地监听,添加#号
#bind-address = 127.0.0.1
3、启动MySQL服务,使其修改的配置生效
sudo restart mysql
配置完了服务器的数据访问权限,此时还是不能远程访问MySQL数据库
这是因为现在还没有对服务器上的数据库或表赋予访问权限(GRANT)
4、在服务器上,登录MySQL数据库
mysql -uroot -proot
5、对数据库wsyw126赋予权限
grant all privileges on wsyw126.* to root@"%" identified by 'root';
flush privileges;
解释:
授权用户能进行远程连接
grant all privileges on *.* to root@"%" identified by "password" with grant option;
flush privileges;
第一行命令解释如下,*.*:第一个*代表数据库名;第二个*代表表名。这里的意思是所有数据库里的所有表都授权给用户。root:授予root账号。“%”:表示授权的用户IP可以指定,这里代表任意的IP地址都能访问MySQL数据库。“password”:分配账号对应的密码,这里密码自己替换成你的mysql root帐号密码。
第二行命令是刷新权限信息,也即是让我们所作的设置马上生效。
6、现在可以远程访问服务器上的MySQL,链接界面如下:
(使用命令行链接:mysql -h121.42.186.99 -uroot -proot)
这个问题的其他答案,可以参考2003 - Can't connect to MySQL server on 'localhost' (10038)(http://stackoverflow.com/questions/25842341/2003-cant-connect-to-mysql-server-on-localhost-10038)
其他命令:
授权信息在数据库:mysql中。
use mysql
1、在服务器上删除用户对数据库的访问权限:
revoke all privileges on wsyw126.* from root@121.42.186.99 identified by 'root';
2、在服务器上删除用户root:
delete from user where user='root';
3、在修改生效:
flush privileges;