今天在Ubuntu下安装了mysql server, 然后试图在winxp下面用Mysql GUI tool链接,结果总是失败,显示错误号为2003.
下面是探索过程:
1.首先怀疑是Ubuntu下面有防火墙, 在winxp下面ping可以ping通, Ubuntu下面执行 "ufw status" 显示也是inactive的;
说明和防火墙没有关系。
2. 怀疑mysql 没有起来, 在Ubuntu下面执行"ps -ef | grep mysql"显示 mysql 正常;
3. 没办法了,开始从网上搜索, 找到了解决办法:
1)mysql -uroot -p, 输入密码后进入mysql提示符:
mysql> use mysql mysql> select host, user from user; +---------------+------------------+ | host | user | +---------------+------------------+ | 127.0.0.1 | root | | localhost | debian-sys-maint | | localhost | root | +---------------+------------------+
从显示结果看出只允许本地用户登录, 所以需要加入允许的IP地址用户;
mysql> GRANT ALL on *.* to
[email protected] IDENTIFIED BY 'password'; mysql> flush privileges; mysql> select host, user from user; +---------------+------------------+ | host | user | +---------------+------------------+ | 127.0.0.1 | root | | 192.168.0.105 | root | | localhost | debian-sys-maint | | localhost | root | +---------------+------------------+
本以为现在从IP地址为192.168.0.105的用户可以用root和密码password链接到mysql了,可是链接还是出现2003的错误号;
于是继续搜索;
2) su到root帐号,然后:
$ vi /etc/mysql/my.cnf
找到 bind-address = 127.0.0.1
改为 bind-address = 192.168.0.102
改完保存后, 执行 service mysql restart 重启mysql, 再次链接搞定。
这里解释一下bind-address, 这个地址mysql监听的ip地址, 默认是127.0.0.1,也就是mysql只在回环地址上(也就是lo上)监听,所以外面的ip地址链接不进来, 修改后的ip地址192.168.0.102是mysql server主机上的对外ip地址,也就是和外界通信的那块网卡eth0,这样才能监听到外部网络进来的连接请求。
修改前执行:netstat -na | grep 3306结果为:
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
修改后执行:netstat -na | grep 3306结果为:
tcp 0 0 192.168.0.102:3306 0.0.0.0:* LISTEN
顺便说一下,今天su到root的时候总是失败,这里是问题的原因:
刚刚在vmware里装好了ubuntu8.04,由于Ubuntu root用户在默认情况下是禁用的,不允许用root登陆,而有很多时候的操作又需要有root用户的权限。要使用root帐户登陆,遵循以下步骤:
1、首先重置root密码:
利用现有管理员帐户登陆Ubutu,在终端执行命令:sudo passwd root,接着输入密码和root密码,重复密码。再重新启动就可以用root登陆。
2、允许以root用户登录:
默认情况是不允许用root帐号直接登陆图形界面的。这可以通过修改/etc/gdm/gdm.conf文件来允许root直接登陆,在该文件中找到 AllowRoot=false 将其改为 AllowRoot=true 切换用户就可以了。
注:gdm.conf默认是只读属性,修改前请先使用sudo chmod 777 /etc/gdm/gdm.conf 将文件权限设置为为777。
-----http://hi.baidu.com/zhulei632/blog/item/e85050432c 5429149213c671.html