在 Red Hat Enterprise Linux AS 3.0 伺服器上,已運行基於 MySQL 4.0、Tomcat 4.1 的 Web 應用。新專案要求同機部署 MySQL 5.0,並共用既有 Tomcat,需解決:
| 項目 | MySQL 4.0 (RPM) | MySQL 5.0 (源碼編譯) |
|---|---|---|
| 安裝路徑 | /usr (預設) | /usr/local/MySQL5 |
| 資料目錄 | /var/lib/mysql | /var/lib/mysql5 |
| 配置檔 | /etc/my.cnf | /etc/my5.cnf |
| 啟動腳本 | /etc/rc.d/init.d/mysql | /etc/rc.d/init.d/mysql5 |
| 端口 | 3306 | 3307 |
| Socket | /tmp/mysql.sock | /tmp/mysql5.sock |
useradd mysql
mkdir -p /usr/local/MySQL5 /var/lib/mysql5cd mysql-5.0.51a
./configure \
--prefix=/usr/local/MySQL5 \
--localstatedir=/var/lib/mysql5 \
--with-charset=gbk --with-collation=gbk_chinese_ci --with-extra-charsets=all \
--without-innodb --without-ndb-debug \
--enable-thread-safe-client --with-big-tables \
--with-mysqld-user=mysql
make && make installcd /usr/local/MySQL5
bin/mysql_install_db --user=mysqlchown -R root:mysql .
chown -R mysql /var/lib/mysql5
chgrp -R mysql .share/mysql/my-huge.cnf → /etc/my5.cnf、share/mysql/mysql.server → /etc/rc.d/init.d/mysql5my5.cnf:port=3307、socket=/tmp/mysql5.sock、datadir=/var/lib/mysql5mysql5:指定 --defaults-file=/etc/my5.cnfchmod 755 /etc/rc.d/init.d/mysql5
chkconfig --add mysql5
service mysql5 startbin/mysqladmin -u root password 'new_pass'
bin/mysql -u root -p -e "UPDATE mysql.user SET Password=PASSWORD('new_pass') WHERE User='root'; FLUSH PRIVILEGES;"my5.cnf [mysqld] 區加入 lower_case_table_names=1 忽略大小寫。ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'--socket=/tmp/mysql5.sock 或在 [client] 區設定 socket 路徑。jdbc.url 端口為 3307,加上 useUnicode=true&characterEncoding=gbk。/etc/init.d/mysql restart
/etc/init.d/mysql5 restart
netstat -nat | grep -E '3306|3307'
兩端口均 LISTEN 即成功。Tomcat 啟動後測試新舊應用均正常訪問對應實例。