qiren83 发表于 2013-1-28 12:42:50

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( )

            #vi /etc/my.cnf

            修改如下:(红色为添加部分)

            
             #password      = your_password
            port             = 3306
            socket         = /var/lib/mysql/mysql.sock
            default-character-set=utf8 (经过验证好像这一步不用设置也可以达到效果)

               
                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'

               
                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    (实现启动,停止,重启)

       也可以通过 #service mysql (实现启动,停止,重启)
页: [1]
查看完整版本: linux MYSQL 乱码问题