我已经更改了 /etc/my.cnf 中的数据目录。
datadir=/data/mysql
socket=/data/mysql/mysql.sock
我还将 mysql 文件夹从
/var/lib/mysql/
到
/data/mysql
现在当我连接到 mysql 时出现以下错误:
[root@youradstats-copy mysql]# mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
当我查看 /var/logs/msqld.log 时,我收到以下消息:
InnoDB: Setting log file /data/mysql/ib_logfile0 size to 512 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Progress in MB: 100 200 300 400 500
120704 7:43:31 InnoDB: Log file /data/mysql/ib_logfile1 did not exist: new to be created
InnoDB: Setting log file /data/mysql/ib_logfile1 size to 512 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Progress in MB: 100 200 300 400 500
InnoDB: Cannot initialize created log files because
InnoDB: data files are corrupt, or new data files were
InnoDB: created when the database was started previous
InnoDB: time but the database was not shut down
InnoDB: normally after that.
120704 7:43:36 [ERROR] Plugin 'InnoDB' init function returned error.
120704 7:43:36 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
在进行这些更改之前,我正确关闭了 mysql,然后正确启动了它,但不知道为什么会收到这些消息。请帮忙解决问题,因为我已经在 my.cnf 中更改了套接字路径,但它仍然指向旧路径......
答案1
检查一下新位置是否有套接字文件?
ls -la /data/mysql/mysql.sock
如果存在,权限是否正确?如果您不确定,请告诉我们。
如果存在,下一步是尝试:
mysql -S /data/mysql/mysql.sock
如果可行,则只需更改文件部分sock=/path/
中的即可。如果不存在,则应创建它。[client]
my.cnf
这是不是[client]
当您更改文件部分中的内容时,需要重新启动 mysql my.cnf
。
另外,您发布的日志消息显示您没有/var/lib/mysql/
正确复制目录中的数据,或者您存在权限问题。如果您不确定,请向我们显示以下输出:ls -la /data/mysql/
答案2
您的 /etc/my.cnf 或 /root/.my.cnf 文件中应该有 [mysql-client] 部分,它定义了套接字的位置。
如果您阅读 MySQL 日志,它会告诉您需要重新启动数据库(/etc/init.d/mysqld restart)。