解决Ubuntu中更改MySQL默认编码报错

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:

Ubuntu 12.04,安装了MySQL,完了之后,更改了字符编译,就报错。感觉很郁闷。

 

环境:


 
  1. root@ubuntu:~# uname -a 
  2. Linux ubuntu 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux 

使用的  apt-get install mysql-server安装的,然后改变了一下默认的字符集,在/etc/mysql/my.cnf里面的[mysqld]和[client]里加了
default-character-set=utf8,重启就不行了。 


 
  1. root@ubuntu:~# service mysql start 
  2. start: Job failed to start 


看了系统日志,报了以下内容


 
  1. Jun 11 22:56:42 ubuntu kernel: [ 4051.584941] init: mysql main process (4021) terminated with status 7 
  2. Jun 11 22:56:42 ubuntu kernel: [ 4051.584981] init: mysql main process ended, respawning 
  3. Jun 11 22:56:43 ubuntu kernel: [ 4052.134766] init: mysql post-start process (4022) terminated with status 1 
  4. Jun 11 22:56:43 ubuntu kernel: [ 4052.154739] type=1400 audit(1339469803.511:40): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=4068 comm="apparmor_parser" 
  5. Jun 11 22:56:44 ubuntu kernel: [ 4053.619246] init: mysql main process (4072) terminated with status 7 
  6. Jun 11 22:56:44 ubuntu kernel: [ 4053.619296] init: mysql main process ended, respawning 
  7. Jun 11 22:56:45 ubuntu kernel: [ 4054.248707] init: mysql post-start process (4073) terminated with status 1 
  8. Jun 11 22:56:45 ubuntu kernel: [ 4054.269778] type=1400 audit(1339469805.627:41): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=4119 comm="apparmor_parser" 
  9. Jun 11 22:56:47 ubuntu kernel: [ 4055.733347] init: mysql main process (4123) terminated with status 7 
  10. Jun 11 22:56:47 ubuntu kernel: [ 4055.733389] init: mysql respawning too fast, stopped 
  11. root@ubuntu:~#  

纠结了很长时间,今天无意中测试,意外解决了问题,呵呵,不得不说,RP爆发。

配置文件如下

 

 
  1. root@ubuntu:/etc/mysql# cat /etc/mysql/my.cnf | grep -v '^#' 
  2.  
  3. [client] 
  4. default-character-set=utf8 #这里其实不用指定的,如果要指定,要用这个指令。
  5. port            = 3306 
  6. socket          = /var/run/mysqld/mysqld.sock 
  7.  
  8.  
  9. [mysqld_safe] 
  10. socket          = /var/run/mysqld/mysqld.sock 
  11. nice            = 0 
  12.  
  13. [mysqld] 
  14. character_set_server=utf8 #要使用这个命令,default-character-set=utf8会报错
  15. user            = mysql 
  16. pid-file        = /var/run/mysqld/mysqld.pid 
  17. socket          = /var/run/mysqld/mysqld.sock 
  18. port            = 3306 
  19. basedir         = /usr 
  20. datadir         = /var/lib/mysql 
  21. tmpdir          = /tmp 
  22. lc-messages-dir = /usr/share/mysql 
  23. skip-external-locking 
  24. bind-address            = 127.0.0.1 
  25. key_buffer              = 16M 
  26. max_allowed_packet      = 16M 
  27. thread_stack            = 192K 
  28. thread_cache_size       = 8 
  29. myisam-recover         = BACKUP 
  30. query_cache_limit       = 1M 
  31. query_cache_size        = 16M 
  32. expire_logs_days        = 10 
  33. max_binlog_size         = 100M 
  34.  
  35. [mysqldump] 
  36. quick 
  37. quote-names 
  38. max_allowed_packet      = 16M 
  39.  
  40. [mysql] 
  41.  
  42. [isamchk] 
  43. key_buffer              = 16M 
  44.  
  45. !includedir /etc/mysql/conf.d/ 
  46. root@ubuntu:/etc/mysql#  

可以看出,在[client]和[myslqd]段中,设置字符编码使用的指令不一样。

然后重启mysql就可以了

 

 
  1. root@ubuntu:/etc/mysql# service mysql restart 
  2. mysql stop/waiting 
  3. mysql start/running, process 6981 
  4. root@ubuntu:/etc/mysql# mysql -uroot -p 
  5. Enter password:  
  6. Welcome to the MySQL monitor.  Commands end with ; or \g. 
  7. Your MySQL connection id is 147 
  8. Server version: 5.5.22-0ubuntu1 (Ubuntu) 
  9.  
  10. Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. 
  11.  
  12. Oracle is a registered trademark of Oracle Corporation and/or its 
  13. affiliates. Other names may be trademarks of their respective 
  14. owners. 
  15.  
  16. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 
  17.  
  18. mysql> show variables like '%char%'; 
  19. +--------------------------+----------------------------+ 
  20. | Variable_name            | Value                      | 
  21. +--------------------------+----------------------------+ 
  22. | character_set_client     | utf8                       | 
  23. | character_set_connection | utf8                       | 
  24. | character_set_database   | utf8                       | 
  25. | character_set_filesystem | binary                     | 
  26. | character_set_results    | utf8                       | 
  27. | character_set_server     | utf8                       | 
  28. | character_set_system     | utf8                       | 
  29. | character_sets_dir       | /usr/share/mysql/charsets/ | 
  30. +--------------------------+----------------------------+ 
  31. 8 rows in set (0.00 sec) 


本文转自 gm100861 51CTO博客,原文链接:
http://blog.51cto.com/gm100861/896173

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
344
分享
相关文章
在Ubuntu系统的Docker上安装MySQL的方法
以上的步骤就是在Ubuntu系统的Docker上安装MySQL的详细方法,希望对你有所帮助!
38 12
容器技术实践:在Ubuntu上使用Docker安装MySQL的步骤。
通过以上的操作,你已经步入了Docker和MySQL的世界,享受了容器技术给你带来的便利。这个旅程中你可能会遇到各种挑战,但是只要你沿着我们划定的路线行进,你就一定可以达到目的地。这就是Ubuntu、Docker和MySQL的灵魂所在,它们为你开辟了一条通往新探索的道路,带你亲身感受到了技术的力量。欢迎在Ubuntu的广阔大海中探索,用Docker技术引领你的航行,随时准备感受新技术带来的震撼和乐趣。
63 16
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
【YashanDB知识库】MySQL和YashanDB 隐式转换不一致引起的报错
本文分析了在YashanDB中执行特定SQL语句时出现的类型转换错误问题,并对比了YashanDB、Oracle和MySQL 5.7的行为差异。问题源于隐式类型转换,当数值字段与非法数字字符串(如'1,2')进行比较时,YashanDB和Oracle会报错,而MySQL 5.7虽不报错但会引发警告。通过调整SQL语句,避免数值与字符串直接比较,可有效解决问题。文章还详细解析了不同值表现不一致的原因,涉及执行计划和过滤条件的实际运行细节。
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
【YashanDB 知识库】MySQL 和 YashanDB 隐式转换不一致引起的报错
【YashanDB 知识库】MySQL 和 YashanDB 隐式转换不一致引起的报错
如何在 Ubuntu 20.04 上安装 MySQL
MySQL是最流行的开源关系数据库管理系统。它速度快,容易使用,容易扩展,并且流行的LAMP和LEMP的一部分。 这篇指南讲解了如何在 Ubuntu 20.04上安装和保护 MySQL。 一、前提条件 确保你以 sudo 用户身份登录 二、在 Ubuntu 上安装 MySQL 在写作这篇文章的时候,Ubuntu 源仓库中最新的 MySQL 版本号是 MySQL 8.0。
55372 4
如何在 Ubuntu 20.04 上安装 MySQL
如何在Ubuntu14.04中安装mysql
接触过MySQL的小伙伴们都知道,在Windows下安装MySQL是一件让人十分头大的事情,但是在Ubuntu等其他Linux系统中安装MySQL就简单很多了,具体的教程如下。
1633 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等