花了1天,在Debian Etch Linux上成功安装了MySQL 5.0.27 icc版本,并使用JDBC测试中文成功! We |G6
>;NrF
中文问题的关键是全部使用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环境下测试中文正常。 BAq_Q24;
%(Hs/
h*G
1. 下载"mysql-standard-5.0.27-linux-i686-icc-glibc23.tar.gz",推荐ICC版本,据称比GCC性能提高10-20% 0 S}"1=
0je/G}B)@
2. 复制到/usr/local/,解压:tar zxvf mysql-standard-5.x....tar.gz Ofte7"X?
LD@u {-o
3. 添加用户和组mysql: O1!^OfS!m
$~X;~<
groupadd mysql D9qGcAl5U
V`5'F/@
useradd -g mysql mysql /U/pJr9I
HyRqpUc-wG
4. 创建符号连接:/usr/local # ln -s mysql-standard-5.x... mysql FKne6jWU
hTqP ]x
5. cd mysql,当前目录改为/usr/local/mysql/ n.u^mgG
Z-f)G t}
6. 运行脚步初始化数据库:./scripts/mysql_install_db --user=mysql 2l |>uv,
D2.H @G-v
7. 设置权限: D3"l'LiJ
k$ca};MQw
/usr/local/mysql # chown -R root . DQ(&.$jN-
G2wC |D
/usr/local/mysql # chown -R mysql data <.u,WS^8*
BJ/Hu B
/usr/local/mysql # chgrp -R mysql x@0tR^37X
._Mj?$L
%>C4%6jx?Z
-------------------------------------------------------------------------------- R 0/s9Nk4
_Gl%! r@g
8. 根据需要创建并修改/etc/my.cnf,参考配置: >=bOMY-E%
0ulwa"5dO
[mysqld] t; ,?
/qF:SR$X
# 设置默认为INNODB表,支持事务: b,)v68d$T
z5O)c
default-storage-engine=INNODB YWta?EL
4+vRcn
# 设置默认的字符集UTF-8: @MGtC9,z
65qzruMuN
character-set-server=utf8 h5_/-mk
wFPv +=
collation-server=utf8_general_ci .? o 87
i-v[6>[+
tMj?"a9-Rb
default-character-set=utf8 k< WxZkr(
w<i1#;P7.
# 禁用bdb: M1G VEWJ
qy"M9uz`
skip-bdb I&+`:%
wE5[D>~
9. 启动MySQL: Zd!?7 /D
z.1/iK
/usr/local/mysql/bin # ./mysqld_safe --user=mysql & &D~2Hu+
sG+N35wT[
10. 初始化root口令: b34&$g
Cs 7s+vH{
/usr/local/mysql/bin # ./mysqladmin -u root -p password "password-of-root" c :-l!/
y m# 4
Enter password: <输入旧口令,直接按Enter> ='qfKn
v%|"
bi,qMADfd
-------------------------------------------------------------------------------- XjYoqf,%55
11. 以root登录创建数据库: V#'' ]3
/usr/local/mysql # ./mysql -u root -p :R[6$8"
D{wn^:
Enter password: password-of-root TA*itX{
&C !jD>
12. 创建一个新用户: z#UVtu!S
Eu hT{6,so
mysql> create user test identified by 'test-password'; 0*%oQO?e0
w/= ,/'7
13. 创建一个新数据库: ies?vq
_SwsR{aE
mysql> create database testdb default character set utf8 default collate utf8_general_ci; +(k}
bQyA#M:uX
务必指定字符集和排序方式,均为UTF-8,这样才能保证创建的表也使用UTF-8。 }k*COk4
_h 4]6-
3g@u,.TCl
14. 赋予test用户从localhost访问testdb的权限,并使用口令: wh/%$ '
)gPTA%"R
mysql> grant all on testdb.* to test@localhost identified by 'test-password'; wlrL)J
Fp,W],II
注意:要使用JDBC从远程连接MySQL,就必须正确设置test用户权限,MySQL的访问权限由用户名,客户端机器名和口令共同组成,上例表示仅允许test用户在本机(localhost)通过口令连接MySQL。 /`? ?`f+
rXA% ^`K
7?<Ez&[Bq
-------------------------------------------------------------------------------- j is Nl
"$VkpKr
15. 停止MySQL服务器: XbAwr1/)>
2ri>zz9/
/usr/local/mysql/bin # ./mysqladmin -u root -p shutdown TC/#4[g
O@U"EviFk%
Enter password: password-of-root 2yh }v!
eOTLZ[(1
STOPPING server from pid file /usr/local/mysql/data/debian.pid hYLVhAd
j^7RlYev
xxx mysqld ended %yXe%fMMT
中文秘籍: =GtLB1#
/etc/my.cnf中所有与编码相关的设置均要设定为UTF-8,参考步骤8。 .wz4 Z6.
%L Z7skl
按以下步骤调试: ,'Rdze /!
&O (5:Oq
mysql> status; 5X/+UE7 u.
注意characterset相关值,必须保证全部为utf8,否则,修改/etc/my.cnf,参考步骤8。 #zO45O.2
TPg3a
mysql> show variables like '%char%'; )EoQsxfH/
除了character_set_filesystem显示为binary外,其余应该全部显示为utf8,若非utf8,修改/etc/my.cnf,参考步骤8。 o/ :/*
%(d_yMUn[r
mysql> show variables like '%collation%'; m^8:9o
显示应该全部为utf8_general_ci,否则,修改/etc/my.cnf,参考步骤8。 KI_Q=,Q"
o2eMeV ?%
mysqlshow -u root -p -i database-name h=6v^xI;g
作用:显示数据库详细信息,如果你没有看到utf8_general_ci,而是latin_swedish_ci,说明数据库编码非UTF-8,中文肯定不正常,删之,然后参考步骤13以UTF-8重新创建数据库。
>;NrF
中文问题的关键是全部使用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环境下测试中文正常。 BAq_Q24;
%(Hs/
h*G
1. 下载"mysql-standard-5.0.27-linux-i686-icc-glibc23.tar.gz",推荐ICC版本,据称比GCC性能提高10-20% 0 S}"1=
0je/G}B)@
2. 复制到/usr/local/,解压:tar zxvf mysql-standard-5.x....tar.gz Ofte7"X?
LD@u {-o
3. 添加用户和组mysql: O1!^OfS!m
$~X;~<
groupadd mysql D9qGcAl5U
V`5'F/@
useradd -g mysql mysql /U/pJr9I
HyRqpUc-wG
4. 创建符号连接:/usr/local # ln -s mysql-standard-5.x... mysql FKne6jWU
hTqP ]x
5. cd mysql,当前目录改为/usr/local/mysql/ n.u^mgG
Z-f)G t}
6. 运行脚步初始化数据库:./scripts/mysql_install_db --user=mysql 2l |>uv,
D2.H @G-v
7. 设置权限: D3"l'LiJ
k$ca};MQw
/usr/local/mysql # chown -R root . DQ(&.$jN-
G2wC |D
/usr/local/mysql # chown -R mysql data <.u,WS^8*
BJ/Hu B
/usr/local/mysql # chgrp -R mysql x@0tR^37X
._Mj?$L
%>C4%6jx?Z
-------------------------------------------------------------------------------- R 0/s9Nk4
_Gl%! r@g
8. 根据需要创建并修改/etc/my.cnf,参考配置: >=bOMY-E%
0ulwa"5dO
[mysqld] t; ,?
/qF:SR$X
# 设置默认为INNODB表,支持事务: b,)v68d$T
z5O)c
default-storage-engine=INNODB YWta?EL
4+vRcn
# 设置默认的字符集UTF-8: @MGtC9,z
65qzruMuN
character-set-server=utf8 h5_/-mk
wFPv +=
collation-server=utf8_general_ci .? o 87
i-v[6>[+
tMj?"a9-Rb
default-character-set=utf8 k< WxZkr(
w<i1#;P7.
# 禁用bdb: M1G VEWJ
qy"M9uz`
skip-bdb I&+`:%
wE5[D>~
9. 启动MySQL: Zd!?7 /D
z.1/iK
/usr/local/mysql/bin # ./mysqld_safe --user=mysql & &D~2Hu+
sG+N35wT[
10. 初始化root口令: b34&$g
Cs 7s+vH{
/usr/local/mysql/bin # ./mysqladmin -u root -p password "password-of-root" c :-l!/
y m# 4
Enter password: <输入旧口令,直接按Enter> ='qfKn
v%|"
bi,qMADfd
-------------------------------------------------------------------------------- XjYoqf,%55
11. 以root登录创建数据库: V#'' ]3
/usr/local/mysql # ./mysql -u root -p :R[6$8"
D{wn^:
Enter password: password-of-root TA*itX{
&C !jD>
12. 创建一个新用户: z#UVtu!S
Eu hT{6,so
mysql> create user test identified by 'test-password'; 0*%oQO?e0
w/= ,/'7
13. 创建一个新数据库: ies?vq
_SwsR{aE
mysql> create database testdb default character set utf8 default collate utf8_general_ci; +(k}
bQyA#M:uX
务必指定字符集和排序方式,均为UTF-8,这样才能保证创建的表也使用UTF-8。 }k*COk4
_h 4]6-
3g@u,.TCl
14. 赋予test用户从localhost访问testdb的权限,并使用口令: wh/%$ '
)gPTA%"R
mysql> grant all on testdb.* to test@localhost identified by 'test-password'; wlrL)J
Fp,W],II
注意:要使用JDBC从远程连接MySQL,就必须正确设置test用户权限,MySQL的访问权限由用户名,客户端机器名和口令共同组成,上例表示仅允许test用户在本机(localhost)通过口令连接MySQL。 /`? ?`f+
rXA% ^`K
7?<Ez&[Bq
-------------------------------------------------------------------------------- j is Nl
"$VkpKr
15. 停止MySQL服务器: XbAwr1/)>
2ri>zz9/
/usr/local/mysql/bin # ./mysqladmin -u root -p shutdown TC/#4[g
O@U"EviFk%
Enter password: password-of-root 2yh }v!
eOTLZ[(1
STOPPING server from pid file /usr/local/mysql/data/debian.pid hYLVhAd
j^7RlYev
xxx mysqld ended %yXe%fMMT
中文秘籍: =GtLB1#
/etc/my.cnf中所有与编码相关的设置均要设定为UTF-8,参考步骤8。 .wz4 Z6.
%L Z7skl
按以下步骤调试: ,'Rdze /!
&O (5:Oq
mysql> status; 5X/+UE7 u.
注意characterset相关值,必须保证全部为utf8,否则,修改/etc/my.cnf,参考步骤8。 #zO45O.2
TPg3a
mysql> show variables like '%char%'; )EoQsxfH/
除了character_set_filesystem显示为binary外,其余应该全部显示为utf8,若非utf8,修改/etc/my.cnf,参考步骤8。 o/ :/*
%(d_yMUn[r
mysql> show variables like '%collation%'; m^8:9o
显示应该全部为utf8_general_ci,否则,修改/etc/my.cnf,参考步骤8。 KI_Q=,Q"
o2eMeV ?%
mysqlshow -u root -p -i database-name h=6v^xI;g
作用:显示数据库详细信息,如果你没有看到utf8_general_ci,而是latin_swedish_ci,说明数据库编码非UTF-8,中文肯定不正常,删之,然后参考步骤13以UTF-8重新创建数据库。
本文详细介绍了在Debian Etch Linux环境下安装MySQL 5.0.27版本的过程,并解决了中文显示问题。重点在于如何配置MySQL支持UTF-8编码,包括修改配置文件my.cnf及通过JDBC进行测试。
1309

被折叠的 条评论
为什么被折叠?



