分类: Mysql/postgreSQL
2008-05-20 22:50:04
源: |
|
花了1天,在Debian Etch Linux上成功安装了MySQL 5.0.27 icc版本,并使用JDBC测试中文成功! 中文问题的关键是全部使用UTF-8编码,MySQL 5发布版支持UTF-8,但默认为latin1,Java在内部使用的全部是Unicode,因此要JSP页面以UTF-8编码,JDBC驱动采用官方Connector4J 5.0.4,在Resin 3.1/Spring 2.0/Hibernate 3.2环境下测试中文正常。 1. 下载"mysql-standard-5.0.27-linux-i686-icc-glibc23.tar.gz",推荐ICC版本,据称比GCC性能10-20% 3. 添加用户和组mysql: groupadd mysql 4. 创建符号连接:/usr/local # ln -s mysql-standard-5.x... mysql 7. 设置权限: /usr/local/mysql # chown -R root . 8. 根据需要创建并修改/etc/my.cnf,配置: [mysqld] # 设置默认为INNODB表,支持事务: default-storage-engine=INNODB # 设置默认的字符集UTF-8: character-set-server=utf8 # 禁用bdb: skip-bdb 9. 启动MySQL: /usr/local/mysql/bin # ./mysqld_safe --user=mysql & 10. 初始化root口令: /usr/local/mysql/bin # ./mysqladmin -u root -p password "password-of-root" Enter password: <输入旧口令,直接按Enter> 11. 以root登录创建数据库: 12. 创建一个新用户: 13. 创建一个新数据库: 务必指定字符集和排序方式,均为UTF-8,这样才能保证创建的表也使用UTF-8。 14. 赋予test用户从localhost访问testdb的权限,并使用口令: mysql> grant all on testdb.* to identified by 'test-password'; 注意:要使用JDBC从远程连接MySQL,就必须正确设置test用户权限,MySQL的访问权限由用户名,客户端机器名和口令组成,上例表示仅允许test用户在本机(localhost)通过口令连接MySQL。 15. 停止MySQL服务器: /usr/local/mysql/bin # ./mysqladmin -u root -p shutdown 中文秘籍: 按以下步骤调试: mysql> status; 注意characterset相关值,必须保证全部为utf8,否则,修改/etc/my.cnf,参考步骤8。 mysql> show variables like '%char%'; 除了character_set_filesystem显示为binary外,其余应该全部显示为utf8,若非utf8,修改/etc/my.cnf,参考步骤8。 mysql> show variables like '%collation%'; 显示应该全部为utf8_general_ci,否则,修改/etc/my.cnf,参考步骤8。 mysqlshow -u root -p -i database-name 作用:显示数据库详细信息,如果你没有看到utf8_general_ci,而是latin_swedish_ci,说明数据库编码非UTF-8,中文肯定不正常,删之,然后参考步骤13以UTF-8重新创建数据库。 |