在日常工作中使用MYSQL经常会遇到一些或大或小的问题,为了方便日后能够快速的解决类似的问题,现将其总结一下,同时也可以分享给大家。
1. Mysql ERROR 1042 (HY000): Can’t get hostname for your address
远端连接不是MYSQL服务是非常常见的问题
解决方法:
方案1:更改配置文件
Linux系统中编辑:mysql安装路径/my.cnf文件;
windows系统中编辑:mysql安装路径\my.ini文件。
在:[mysqld]配置项目内添加一行:skip-name-resolve
禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间。然后重启mysql生效。
方案2:更改hosts文件
Linux系统中编辑/etc/hosts文件;
windows系统中编辑C:\WINDOWS\system32\drivers\etc\hosts文件。
在:hosts文件中加上一行:要连接电脑的ip地址 要连接电脑的电脑名称
例如我要连接150上的MYSQL,我就加上一行:192.168.1.150 20110407-0627
2. 中文文法显示,出现乱码。
通常情况会出现下面的画面。
解决方法:
方案1
通常常见的方法是改变字符集,支持中文的字符集一般选择gbk。修改命令为: charset gbk
3.当启动mysql是出现ERROR 2002
解决方法:
方案1.
1) ps -A|grep mysql
显示类似:1829 ? 00:00:00 mysqld_safe
1876 ? 00:00:31 mysqld
2) kill -9 1829
3) kill -9 1876
4) /etc/init.d/mysql restart
5) mysql -u root -p
方案2
先执行 /etc/rc.d/init.d/mysqld status 看看mysql是否已经启动.
另外看看是不是权限问题.
chown -R mysql:mysql /var/lib/mysql
/etc/init.d/mysqld start
启动 MySQL: [ 确定 ]
mysqladmin -uroot password '123456'
mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.Commands end with ; or \g.
方案3
连接数设置太大,如果设置max_connections=1000就会因为设置数量太大而无法连接上,最好将设置数其改为300以下或者直接删除不要。
方案4
不能通过mysql.sock连接MySQL这个问题主要提示是不能通过 /tmp/mysql.sock连到服务器,而php标准配置正是用过/tmp/mysql.sock,但是一些mysql安装方法将 mysql.sock 放在/var/lib/mysql.sock或者其他的什么地方,你可以通过修改/etc/my.cnf文件来修正它,打开文件,可 以看到如下的东东:
[mysqld]
socket=/var/lib/mysql.sock
改一下就好了,但也会引起其他的问题,建议最好不要修改。
如mysql程序连不上了,再加一点:
[mysql]
socket=/tmp/mysql.sock
或者还可以通过修改php.ini中的配置来使php用其他的mysql.sock来连,这个大家自己去找找
或者用这样的方法:ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
4.当启动mysql是出现The server quit withoutupdating PID file (/var/lib/mysql/localhost.localdomain.pid)
解决方案:
出现此类问题一般是/etc/my.cnf(my.ini)设置不正确,要想具体确认是哪个地方设置不正确可以查看启动LOG档案(linux:/var/lib/mysql/localhost.localdomain.err;windows:& datadir\hostname.err, datadir是my.ini中设置的一个参数)
Mysql的参数非常多,也不好一一说明那些会有问题,如果出现问题可以先现将其MARK起来,再试一试是否可以正常启动,有些参数不设置的话Mysql会默认取预设值;实在不行的话可在网上寻求帮助。上面截图中红色框框的参数就是错误的,将其去掉后重新启动服务,就不会出现问题了。
5. Mysql服务无法启动,提示错误代码1067
解决方案:
先查看Mysql错误日志,一般以电脑名称为文件名称,以.ERR为文件的后缀。
根据错误信息的提示进行相应的修改,上面的错误就是因为我没有创建mysql数据库导致,创建后重新启动数据库就好了。如果问题是没有遇到过的,可以上网搜索帮忙解决。