本文针对的环境是 centos 6.8 mysql 5.6.24版本
1.执行命令 service msyql status查看mysql运行状态时报错:MySQL is not running, but lock file
解决:移除锁文件,并把该lock文件位置设定;
rm /var/lock/subsys/mysql
lock file 在 /etc/rc.d/init.d/mysql 中设定修改lockdir
vi /etc/rc.d/init.d/mysql
![6718b0224d5ccf5b73e94852ba17c20e.png](https://i-blog.csdnimg.cn/blog_migrate/91a7ed844935d45717895bf3d4471598.jpeg)
2.重启mysql服务的时候 报错:
Starting MySQL........The server quit without updating PID [失败]/usr/local/mysql/data/mysql/hadoop102.pid).
解决:直接找到对应的文件进行查看pid文件,这个hadoop102.pid其实就是一个错误日志文件,也有可能叫hadoop102.err(hadoop102这里是你linux主机的名称)
cat /usr/local/mysql/data/mysql/hadoop102.pid
当时我遇到的具体报错信息如图:
![a8ba4c0bd53642ff5bded4a18e40d9de.png](https://i-blog.csdnimg.cn/blog_migrate/ccff86d8c9286575a12b64032fcc8b08.jpeg)
原因:其实这个是我当时设定默认编码格式的弄错了;
打开 vi /usr/my.cnf 文件(有的默认配置文件在/etc/my.cnf)
注释掉 default-character-set=utf8或者更改位置,写在client下就行
service mysql start 重启就好使了
针对设定编码格式的补充:
[client]下添加:default-character-set=utf8
[mysqld]下添加:character_set_server=utf8
3.启动mysql 服务的时候 报错 can't open the mysql plugin table
解决:其实就是启动找不到mysql 的数据文件。 mysql 的数据文件默认位置为 /var/lib/mysql
查看自己配置文件 vi /usr/my.cnf 文件 datadir的配置
我自己配置的为 如图
![4c1c8f47d2f951aed719f6b0b40ee460.png](https://i-blog.csdnimg.cn/blog_migrate/0fb4499de6c4293adfb78c471bc9cd46.jpeg)
因此针对这个问题,可以有两种解决方式:
1)将/var/lib/mysql 数据文件全部移到/usr/local/mysql/data 下
mv /var/lib/mysql /usr/local/mysql/data
2)修改my.cnf文件中,数据的存放路径,同时需要修改Mysql启动文件 /etc/rc.d/init.d/mysql 中datadir
vi my.cnf 添加如下一行
![d10d520ea8e624a338e98d88bc30ce34.png](https://i-blog.csdnimg.cn/blog_migrate/64f4e9e0ff250d563027f0211847dea6.jpeg)
修改MySQL启动脚本/etc/rc.d/init.d/mysql
vi /etc/rc.d/init.d/mysql
添加 datadir=/usr/local/mysql/data/mysql ,如图
![2acc6e8f994fa8f9a040961eafc4a327.png](https://i-blog.csdnimg.cn/blog_migrate/3be810c357439e01a15ea42f9d7aba13.jpeg)
4. 在创建表时 报错[Err] 1071 - Specified key was too long; max key length is 767 byte
原因:MySQL的varchar主键只支持不超过768个字节 或者 768/2=384个双字节 或者 768/3=256个三字节的字段 ,而 GBK是双字节的,UTF-8是三字节的。脚本中有三个索引建立在了编码为GBK,varchar(500)的字段上,所以导致超过限定的长度。
解决:修改默认编码为utf8
[client]下添加:default-character-set=utf8
[mysqld]下添加:character_set_server=utf8
![97472578c64b3e975cf7db6908cbde80.png](https://i-blog.csdnimg.cn/blog_migrate/f2e8b2ee65559644999a0c1aaffb51ca.jpeg)
但是需要注意的是,在更改编码格式之前建立的数据库会保持创建时的编码格式,于是在更改数据库编码格式后,需要重新建立数据库!
5.在使用socket连接方式 报错:mysql Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
1)可以修改smysql.sock 存放目录(my.cnf有的机器也在/etc/my.cnf下),想查找执行 whereis my.cnf
vi /usr/my.cnf
在【mysqld】下添加 socket =/usr/local/mysql/data/mysql/mysql.sock
然后重启mysql 服务
service msyql restart
2)连接时指定 socket目录
mysql -uroot -p123456 --socket='/usr/local/mysql/data/mysql/mysql.sock'
3)通过mysql.sock建立软连接在执行socket连接
ln -s /usr/local/mysql/data/mysql/mysql.sock /var/lib/mysql/mysql.sock
将我设定 的socket文件位置,在/var/lib/mysql下放置一份,以供读取
结果如图:
![48df2e612cac2fc710f7a0b186aca514.png](https://i-blog.csdnimg.cn/blog_migrate/54f193faa4189dcb6f3f6e6c6019d373.jpeg)
版权声明:本文为博主原创文章,转载请注明本页地址。https://blog.csdn.net/l1994m/article/details/88198640