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

  • 配置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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"Can't connect to local MySQL server through socket"是一个常见的错误消息,它表示无法通过socket连接到本地的MySQL服务器。这个问题通常是由于连接配置错误或MySQL服务器未正确启动引起的。要解决这个问题,可以考虑以下几个解决方法。 首先,确保MySQL服务器已经正确启动并正在运行。可以通过运行命令`sudo service mysql status`来检查MySQL服务器的状态。如果MySQL服务器未运行,可以使用`sudo service mysql start`命令启动它。 其次,检查连接配置。在Python中连接MySQL时,可以在连接函数中指定socket文件。例如,在连接函数中添加`unix_socket='/var/lib/mysql/mysql.sock'`参数来指定socket文件的位置。这将帮助解决Python连接MySQL时出现的问题。 对于PHP的PDO连接MySQL问题,也可以通过在连接字符串中添加mysql socket文件的位置来解决。例如,可以在连接字符串中添加`unix_socket=/var/lib/mysql/mysql.sock`来指定socket文件的位置。 总结起来,无法通过socket连接到本地的MySQL服务器的问题可以通过检查MySQL服务器的状态和连接配置解决。确保MySQL服务器已经正确启动,并在连接函数或连接字符串中指定正确的socket文件位置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [连接Mysql提示Can’t connect to local MySQL server through socket解决方法](https://blog.csdn.net/weixin_39833509/article/details/119002870)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值