背景:這兩天完成了一個項目數據庫的切換,從Oracle -> Mysql。需要部署上去了,要求mysql要運行Linux環境。還是學校的時候玩過Linux,於是現在就有了這個摸索。
準備:安裝好的Linux,我的是Redhat 5.5; Windows下鏈接Linux用的工具,可用來將你下載好的mysql數據庫傳到Linux上面去,我的是 SSH Source Shell; Linux版本mysql,mysql有好些類型的版本,rpm、resource、binaries等,最好用的就是binaries的。mysql官方下載鏈接:http://dev.mysql.com/downloads/mysql/#downloads 選 Linux -Generic,然後選帶Compressed 字樣的 以 .tar.gz結尾的下載(編譯好的壓縮包)。
安裝:
1、在windows下先把下載好的Mysql數據庫用工具(準備中提到的工具)放到Linux的 /usr/local/ 下面去。
2、在Linux下,運行下面的命令,安裝Mysql(引自官方文檔:http://dev.mysql.com/doc/refman/5.6/en/binary-installation.html)。
- shell>
groupadd mysql
- shell>
useradd -r -g mysql mysql
- shell>
cd /usr/local
- shell>
tar zxvf 這裏寫你的.tar.gz包名
- shell>
ln -s 這裏寫
你的.tar.gz包解壓後的文件名
mysql - shell>
cd mysql
- shell>
chown -R mysql .
- shell>
chgrp -R mysql .
- shell>
scripts/mysql_install_db --user=mysql
- shell>
chown -R root .
- shell>
chown -R mysql data
- shell>
bin/mysqld_safe --user=mysql &
3、讓mysql 的root 用戶能使用遠程鏈接。
shell> cd /usr/local/mysql/bin
shell> ./mysql
mysql> grant all privileges on *.* to root@'%' identified by '123456' with grant option;
4、修改Linux防火牆,開通3306端口,讓外部能鏈接上Mysql。
意思就是修改一下Linux防火牆配置文件,讓它不攔截3306端口。
這個文件的路徑是 /etc/sysconfig/iptables
修改方法:把 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT 這句複製再插入,然後把 22 改成3306 就行了。注意,請插入在
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited 這句之前。
我的是這樣的:
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
重啓防火牆,讓修改生效。
shell> service iptables stop
shell> service iptables start
那麼,恭喜,現在你就可以讓window的工具去訪問你Linux 上的 mysql數據庫了。
我用的是:SQLyog
附:
安裝好後還遇到些問題。
1、Linux 上數據庫表是區分大小寫的。這導致程序報 找不到XXX表 的錯誤,我需要mysql對錶名大小寫不敏感。
2、Linux 上數據庫的編碼問題,我需要utf8的。
3、性能優化、安全設置等。
我對1、2的解決:在啓動mysql 數據庫的時候指定好。
shell> cd /usr/local/mysql
shell> ./mysqld_safe --user=mysql --lower_case_table_names=1 --character_set_server=utf8 &
mysql 關閉命令:
shell> ./mysqladmin shutdown