背景:这两天完成了一个项目数据库的切换,从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