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


    安装完的MySQL的默认字符集为 latin1 ,为了要将其字符集改为用户所需要的(比如utf8),就必须改其相关的配置文件;由于linux下MySQL的默认安装目录分布在不同的文件下;不像windows一样放在同一目录下,只需修改其中的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.cnf my-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 再重启,问题解决

  • 相关阅读:
    sql命令附加数据库
    数据解析0102
    xml file parser
    c#字定义异常处理类
    simple workflow implement
    High Performance Multithreaded Work Item / Event Scheduling Engine
    字符定位
    C#实现的不重复随机数序列生成算法
    Thread并发数控制
    通过Assembly来创建Type Instance
  • 原文地址:https://www.cnblogs.com/bmate/p/3897528.html
Copyright © 2020-2023  润新知