加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_汕头站长网 (https://www.0754zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

linux下mysql字符集编码问题的修改

发布时间:2022-09-21 15:26:24 所属栏目:Linux 来源:
导读:  安装完的MySQL的默认字符集为 latin1 ,为了要将其字符集改为用户所需要的(比如utf8),就必须改其相关的配置文件;由于linux下MySQL的默认安装目录分布在不同的文件下;不像windows一样放在同一目录下linux编码,
  安装完的MySQL的默认字符集为 latin1 ,为了要将其字符集改为用户所需要的(比如utf8),就必须改其相关的配置文件;由于linux下MySQL的默认安装目录分布在不同的文件下;不像windows一样放在同一目录下linux编码,只需修改其中的my.ini文件,重起后就生效了;所以先来看看linux下MySQL的数据库文件、配置文件和命令文件分别在不同的目录 :
 
  1、数据库目录,其所创建的数据库文件都在该目录下
 
  /var/lib/mysql/
 
  2、配置文件 (mysql.server命令及配置文件所在地)
 
  /usr/share/mysql
 
  3、相关命令(如mysql mysqladmin等)
 
  /usr/bin
 
  4、启动脚本(如mysql启动命令)
 
  /etc/rc.d/init.d/
 
  查看默认字符集
 
  #mysql -u root - p
 
  #(输入密码)
 
  mysql> show variables like ‘character_set%‘ ;
 
  +--------------------------+----------------------------+
 
  | Variable_name| Value|
 
  +--------------------------+----------------------------+
 
  | 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| utf8|
 
  | character_sets_dir| /usr/share/mysql/charsets/ |
 
  +--------------------------+----------------------------+
 
  修改字符集 :
 
  1.查找/etc目录下是否有my.cnf文件;
 
  #ls -l | grep my.cnf (在/etc下查找是否有my.cnf文件存在)
  
  2.如果没有就要从/usr/share/mysql,拷贝一个到/etc 下,在/usr/share/mysql目录下有五个后缀为.cnf的文件,分别是 my-huge.cnf my-innodb-heavy-4G.cnf my-large.cnf my-medium.cnfmy-small.cnf ;从中随便拷贝一个到/etc目录下并将其改为my.cnf文件,我选择的是my-medium.cnf :
 
  #cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
 
  3.修改my.cnf文件,在该文件中的三个地方加上 default-character-set=utf8([client] [mysqld] [mysql])
 
  #vi /etc/my.cnf
 
  修改如下:(红色为添加部分)
 
  [client]
 
  #password= your_password
 
  port= 3306
 
  socket= /var/lib/mysql/mysql.sock
 
  default-character-set=utf8 (经过验证好像这一步不用设置也可以达到效果)
 
  [mysqld]
 
  port= 3306
 
  socket= /var/lib/mysql/mysql.sock
 
  skip-locking
 
  key_buffer = 16M
 
  max_allowed_packet = 1M
 
  table_cache = 64
 
  sort_buffer_size = 512K
 
  net_buffer_length = 8K
 
  read_buffer_size = 256K
 
  read_rnd_buffer_size = 512K
 
  myisam_sort_buffer_size = 8M
 
  default-character-set=utf8
 
  init_connect=‘SET NAMES utf8‘
 
  [mysql]
 
  no-auto-rehash
 
  default-character-set=utf8
 
  保存退出;
 
  4.重起MySQL服务器,使其设置的内容生效
 
  #/etc/init.d/mysql restart
 
  5. 重新登入mysql;
 
  # mysql -u root - p
 
  #(输入密码)
 
  mysql> show variables like ‘character_set%‘ ;
 
  +--------------------------+----------------------------+
 
  | Variable_name| Value|
 
  +--------------------------+----------------------------+
 
  | character_set_client| utf8|
 
  | character_set_connection | utf8|(都生成了utf8,成功了 哈哈哈)
 
  | character_set_database | utf8|
 
  | character_set_filesystem | binary|
 
  | character_set_results | utf8|
 
  | character_set_server| utf8|
 
  | character_set_system| utf8|
 
  | character_sets_dir| /usr/share/mysql/charsets/ |
 
  +--------------------------+----------------------------+
 
  mysql启动和停止 操作 :
 
  可以通过 #/etc/init.d/mysql [start | stop | restart](实现启动,停止,重启)
 
  也可以通过 #service mysql [start | stop | restart](实现启动,停止,重启)
 
  以上为实践总结,如果有更好的方法请告知谢谢
 
  可是在重启的过程中就出会错误
 
  Starting MySQL............The server quit without updating PID file (/var/lib/mysql/node1.pid). [失败]
 
  查一下 /var/lib/mysql/node1.error 错误文件会发现
 
  101004 20:23:38 [ERROR] /usr/sbin/mysqld: unknown variable ‘default-character-set=utf8‘
 
  这是因为 mysqld 不能识别这种格式的 可以将 [ mysqld ] 节点下的 default-character-set=utf8‘ 改成
 
  character_set_server=utf8 再重启,问题解决
 
  linux下mysql字符集编码问题的修改,布布扣,bubuko.com
 

(编辑:云计算网_汕头站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!