花了1天,在debian etch linux上成功安装了mysql 5.0.27 icc版本,并使用jdbc测试中文成功! *pc/s>
2-r+ w1
中文问题的关键是全部使用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环境下测试中文正常。 s _`9kz
9:pdf6d~
8hz d/
1. 下载mysql-standard-5.0.27-linux-i686-icc-glibc23.tar.gz,推荐icc版本,据称比gcc性能提高10-20% /@7d5(`0g_
p$>b!2vu
2. 复制到/usr/local/,解压:tar zxvf mysql-standard-5.x....tar.gz $mcnn}3d
8js;av
3. 添加用户和组mysql: jc!a; rx=
t r?+
groupadd mysql > js]*o-b5
@qbgv+a
useradd -g mysql mysql +,)9^yc
*v/b&'b
4. 创建符号连接:/usr/local # ln -s mysql-standard-5.x... mysql lqdx1w+q
a lygx6
5. cd mysql,当前目录改为/usr/local/mysql/ ;uf)hl
h*9w fe2
6. 运行脚步初始化数据库:./scripts/mysql_install_db --user=mysql j9t;#n}g
~x[r$83ilc
7. 设置权限: 6 6-7
nfs$417z7
/usr/local/mysql # chown -r root . w3ti{7z
uig, ao~x
/usr/local/mysql # chown -r mysql data \cxhvx
1g a2n(x
/usr/local/mysql # chgrp -r mysql jzh9tbs_w
ay[jzux`p
6=(dw>
-------------------------------------------------------------------------------- kvw>u 2
i5m_zp
8. 根据需要创建并修改/etc/my.cnf,参考配置: atz
$fa\ jfy;
[mysqld] v`2pp`
'le!b5ivr
# 设置默认为innodb表,支持事务: 3d30=,
bvm)1is -
default-storage-engine=innodb 7@jm=wm
7g(aq !
# 设置默认的字符集utf-8: w})%d'3&y
%ke;hxs:~
character-set-server=utf8 q^j6r |
h>cf0p>8(,
collation-server=utf8_general_ci ]:0ib#~
ei4=j.n a
bftmtlf+
default-character-set=utf8 ve{9>]
isipz[};@]
# 禁用bdb: mk i@
scfz
skip-bdb d6g/ua5\
>ga- ghf
9. 启动mysql: sy?a>8,)kt
=jo~
/usr/local/mysql/bin # ./mysqld_safe --user=mysql & vyq*
d]d+ bb
10. 初始化root口令: by3 pfow@
/prhxdooz
/usr/local/mysql/bin # ./mysqladmin -u root -p password password-of-root xcox80
qksz
enter password: ?,s,r p7n
?$51p}|
-------------------------------------------------------------------------------- j*h%o`'{r
11. 以root登录创建数据库: 1p0h\ro
/usr/local/mysql # ./mysql -u root -p ^ia?b2@
8[7a!tytk7
enter password: password-of-root odausu
zafzv]tj
12. 创建一个新用户: [2 qtm5
rar 33!u
mysql> create user test identified by 'test-password'; _ow{`b:
g?5,0d
13. 创建一个新数据库: \fuk%\as
je~0~z
mysql> create database testdb default character set utf8 default collate utf8_general_ci; 4|x1l
.z*6c 4z
务必指定字符集和排序方式,均为utf-8,这样才能保证创建的表也使用utf-8。 m0wb
6.ahaq
i'9u}t
14. 赋予test用户从localhost访问testdb的权限,并使用口令: w:uz{j`
-ep
mysql> grant all on testdb.* to test@localhost identified by 'test-password'; ?a6!#os1
ftl^w -
注意:要使用jdbc从远程连接mysql,就必须正确设置test用户权限,mysql的访问权限由用户名,客户端机器名和口令共同组成,上例表示仅允许test用户在本机(localhost)通过口令连接mysql。 l9,ba[n|
`pf9$
\vvu
-------------------------------------------------------------------------------- c d5)8n
0563\*
15. 停止mysql服务器: (9~qyk=h
-jx8#yb7o
/usr/local/mysql/bin # ./mysqladmin -u root -p shutdown brhuc]oi
diimnv[5
enter password: password-of-root _cu}glt
x9,{-~p
stopping server from pid file /usr/local/mysql/data/debian.pid y/tuz>x\
k=[!9)8t
xxx mysqld ended &]g\&d5
中文秘籍:
/etc/my.cnf中所有与编码相关的设置均要设定为utf-8,参考步骤8。 jo*df}
==?rpt
按以下步骤调试: |jtcx[aj7
t [2)rt
mysql> status; zvz!ja,gl
注意characterset相关值,必须保证全部为utf8,否则,修改/etc/my.cnf,参考步骤8。 9ndozk:)n
w's3 ,1
mysql> show variables like '%char%'; dhi_gk
除了character_set_filesystem显示为binary外,其余应该全部显示为utf8,若非utf8,修改/etc/my.cnf,参考步骤8。 r5h\v l\
suxwste
mysql> show variables like '%collation%'; tdgk
显示应该全部为utf8_general_ci,否则,修改/etc/my.cnf,参考步骤8。 8d3h4gqw3d
;j[q\1}h}
mysqlshow -u root -p -i database-name sygf@ mq
作用:显示数据库详细信息,如果你没有看到utf8_general_ci,而是latin_swedish_ci,说明数据库编码非utf-8,中文肯定不正常,删之,然后参考步骤13以utf-8重新创建数据库。
