mysql正常 程序连接失败_MYSQL远程连接正常,本地连接失败

每一次安装和使用MYSQL总是有不同的体会。

这一次的问题是这样的。我们的服务器,有两块磁盘,其中一块容量比较大,打算专门用来做数据盘。于是,决定将mysql的数据库文件转移到数据盘上。于是,停掉mysql服务器,将/var/lib/mysql 目录中的所有文件mv到了 datadisk/mysqldb 下面,然后修改了/etc/my.cnf 将其中的datadir指向了新的目录,然后重启了mysql服务。重启后,一个很奇怪的现象发生了,用程序远程连接mysql服务器成功,用root用户命令行登录(mysql -u root -p)成功。 但是,用JAVA程序本地连接失败,抛出org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Communications link failure 异常。这是一个很奇怪的问题,远程连接的程序和本地连接的程序是同一套,一样的配置,一样的jdbc, 一开始以为是配置的问题,反复修改了配置文件,仍然没有办法解决。 (由于mysql root用户本地登录和远程登录用的不同的两套密码,一开始以为是密码的问题)后来,翻了一下mysql的资料,发现修改了datadir 之后相应的 my.cnf中的socket参数也需要修改,否则的话mysql仍然会使用/var/lib/mysql/mysql.sock文件。 怀疑可能是这个问题,于是,修改my.cnf 中的socket参数,让它也指向datadisk/mysqldb/mysql.sock 。修改后重启mysql,果然,问题解决了,远程和本地程序都可以连接mysql数据库。

可是这个时候,命令行又不行了。 mysql -u root -p 直接报错ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

看样子,命令行仍然用的是原来的mysql.sock连接。于是,网上搜了一下,原来可以通过my.cnf 配置文件指定命令行的socket参数,于是编辑my.cnf加上如下两行:

[client]

socket=datadisk/mysqldb/mysql.sock

重启mysql,一切正常。

看样子,移动数据库,光复制文件是不行的,还需要重新指向mysql.sock的位置才行啊。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值