配置mysql默认编码格式 && 解决Can't connect to local MySQL server through socket 问题

原创 2015年12月22日 11:14:44
  • 配置mysql默认编码格式
  • Linux连接MySQL时的错误:Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’

    网页数据一般采用UTF8编码,而数据库默认为latin 。我们可以通过修改数据库默认编码方式为UTF8来减少数据库创建时的设置,也能最大限度的避免因粗心造成的乱码问题。
    在配置mysql默认编码格式为utf8时遇到如下问题,记下来以作参考。

1. 配置mysql默认编码格式为utf8

    我们可以通过命令查看数据库当前编码:

mysql> SHOW VARIABLES LIKE 'character%';

    发现数据库当前默认编码格式为:

|character_set_client      | latin1                                   |
| character_set_connection | latin1                                   |
| character_set_database   | latin1                                   |
| character_set_filesystem | binary                                   |
| character_set_results    | latin1                                   |
| character_set_server     | latin1                                   |
| character_set_system     | latin1                                   |

    打开mysql配置文件my.cnf,在[client]和[mysql]下添加default-character-set=utf8,在[mysqld]下添加character-set-server=utf8。终端输入命令打开my.cnf:

$ sudo vim /etc/my.cnf

    注:如果/etc下面没有my.cnf配置文件,可从/etc/mysql/my.cnf复制过去,更改的时候/etc/my.cnf和/etc/mysql/my.cnf都更改,并保持一致。

[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8

    保存之后重启mysql:

$ sudo /etc/init.d/mysql stop
    * Stopping MySQL database server mysqld                                 [ OK ]
$ sudo /etc/init.d/mysql start
    * Starting MySQL database server mysqld                                 [ OK ]

    进入mysql查看当前数据库默认编码格式:

$ mysql -u root -p

mysql> SHOW VARIABLES LIKE 'character%'; 

|character_set_client      | utf8                                    |
| character_set_connection | utf8                                    |
| character_set_database   | utf8                                    |
| character_set_filesystem | binary                                  |
| character_set_results    | utf8                                    |
| character_set_server     | utf8                                    |
| character_set_system     | utf8                                    |

    进行到这里修改mysql默认编码格式完成!

2. 配置mysql默认编码格式为过程中遇到的问题

    (1)修改好配置文件my.cnf之后,采用了killall mysql 以及killall mysqld,然后重启mysql的时候报错:

$ sudo /etc/init.d/mysql start
* Starting MySQL database server mysqld                                 [ failed]

    使用> mysql -u root -p登陆是出现下面的错误:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

    通过命令查看mysql启动情况:

>$  ps -ef | grep mysql

root 28221 27474 0 14:18 pts/0 00:00:00 grep mysql   只有这一条

    至此,我可以确定,mysql无法启动。

    (2)我开始排错,首先发现/tmp/mysql.sock不存在

>$ vim /etc/my.cnf

socket=/var/lib/mysql/mysql .sock

/var/lib/mysql/mysql .sock同样不存在 

>$ find / -name mysql.sock

    显示为空,未查询到mysql.sock文件,mysql.sock文件丢失了。

    重启之后仍然有错,mysql.sock未自动生成。
    接下来了解到mysql.sock是一个临时文件,在mysql启动时会自动生成,我的服务器未启动,自然就没有mysql.sock文件。

    我尝试安全启动模式,mysqld_safe试图通过工作目录找到服务器和数据库,但mysqld_safe还是失败。

   >$ mysqld_safe &
     Starting mysqld daemon with databases from ....../mysql/var 
     STOPPING server from pid file   .......pid

     130802 15:17:11 mysqld ended

    各种命令尝试无效的情况下—-学会看错误日志。查看配置文件中log的存储位置:

>$ vim /etc/my.cnf

log_error= /var/log/mysql/error.log

    打开error.log,发现错误:

>$ vim /var/log/mysql/error.log


[ERROR] /usr/sbin/mysqld: unknown variable 'default-character-server=utf8'

    再次打开配置文件my.cnf,才发现修改[mysqld]下面的默认编码格式的时候出现错误,修改之并保存。再次启动安全模式,成功!

>$ mysqld_safe &

    启动mysql,成功!

>$ /etc/init.d/mysql start

    登录mysql,成功!

>$ mysql -u root -p

相关文章推荐

/usr/bin/mysqld: unknown variable 'default-character-set=utf8'的解决

通过rpm包的方式安装了MySQL-server-5.5.11,然后直接在命令行输入service mysql start成功,然后修改/etc/my.cnf,给[mysqld]下增加了default...
  • vah101
  • vah101
  • 2011年04月26日 19:21
  • 39821

MySQL Binlog (异常) unknown variable 'default-character-set=utf8'

1.  MysQL 版本: mysql-5.1.41 2.  在使用mysqlbinlog分析日志时,报错:/usr/local/mysql/bin/mysqlbinlog: unknown v...

MYSQL5.5修改字符集报错:unknown variable 'default-character-set=utf8'

Linux上安装了Mysq 5.5,在配置文件/etc/my.cnf中设置字符集: default-character-set=utf8 结果启动失败,查看日志,里面有如下错误: [ERROR]...

MySQL 2002问题解决方案 - Can't connect to local MySQL server through socket...

mysql,mysqldump,mysqldump,php连接mysql服务常会提示下面错误:ERROR 2002 (HY000): Can't connect to local MySQL serv...

关于 Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock的问题

我们在输入命令 mysq -u用户名 -p密码 时,会出现一些链接问题,本文参考网上之后,大概的解决流程,比较详细,希望能给大家一些帮助。...

centos下mysql问题记录--ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/

一、关于云主机的mysql最近一次云主机的服务器由于被攻击便打算重装一边mysql,彻底删除相关文件后重新安装,没想到怎么装都会出问题。再启动的时候总是出现ERROR 2002 (HY000): Ca...

遇到问题----Can't connect to local MySQL server through socket '/tmp/mysql.sock'

Can't connect to local MySQL server through socket '/tmp/mysql.sock' 提示得很清楚 就是连接的时候要/tmp路径下找一个mysq...

关于Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)的问题

找不到mysql socket的问题,我最近碰到了好多次 重装系统以前,我的mysql,apache,php都是自己编译安装的,当时并没有碰到这些问题, 重装系统以后,我的mysql是通过yum安...

Linux上mysql登陆错误解决办法ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' ...

启动SQL提示"Can't connect to local MySQL server through socket '/tmp/mysql.sock"参考解决方案

写了个脚本可以定时访问本地安装的mySQL,启动本地sql时,突然报下面错误: ERROR 2002 (HY000): Can't connect to local MySQL server ...
  • lizitao
  • lizitao
  • 2016年11月17日 14:09
  • 2002
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:配置mysql默认编码格式 && 解决Can't connect to local MySQL server through socket 问题
举报原因:
原因补充:

(最多只允许输入30个字)