很久没编译安装过mysql了,以前一直使用自己编译的mysql5.1.68,近期出的phpMyAdmin竟然要求mysql5.5以上,索性编译安装一个5.6试试。虽然现在mysql最新版是5.7,但我还是喜欢成熟稳定的产品,做服务器嘛,一般不选用最新的版本。
首先下载mysql源码包,可以在网址:https://dev.mysql.com/downloads/mysql/ 里面去找自己想要的源码包。这里我直接下载的:https://dev.mysql.com/downloads/mysql/5.6.html#downloads 里面的源码包:https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.35.tar.gz
在linux下用wget下载是最方便的了。
下载以后,解压,linux服务器安装基础编译环境(包括cmake):
安装好基础环境后,就可以编译mysql了。
tar zxf mysql-5.6.35.tar.gz
cd mysql-5.6.35
cmake \
-DCMAKE_INSTALL_PREFIX=/data/server/mysql \
-DMYSQL_UNIX_ADDR=/data/server/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/server/mysql/data \
-DMYSQL_TCP_PORT=3306 \
-DENABLE_DOWNLOADS=1
make
make install
让我们看看新安装的mysql占用多少磁盘空间:
915M /data/server/mysql/
915MB,当初mysql5.1的版本时,占用空间250MB,而5.0版本时,占用不到100MB。不过无所谓,现在磁盘一般都大,为了mysql更好的性能,我们占用1GB的空间给这么重要的数据库软件,是值得的。
另外要说的是,编译安装的mysql其实是包括了yum安装的mysql-server,mysql-dev,mysql-client。就是说服务器、客户端和开发文件都有了。
接下来创建mysql用户:
useradd -d /data/server/mysql -s /sbin/nologin mysql
修改mysql整个目录所有文件的权限为mysql:
chown -R mysql:mysql /data/server/mysql
初始化mysql数据库(一定要切入mysql根目录中做,看起来初始化用了相对路径):
cd /data/server/mysql/
./scripts/mysql_install_db --defaults-file=/data/server/mysql/my.cnf --user=mysql --datadir=/data/server/mysql/data
启动mysql:
/data/server/mysql/support-files/mysql.server start
我这里发现错误:Starting MySQL.....The server quit without updating PID fil[FAILED]lib/mysql/iZ2ze3nt8kraa5ukvawf8bZ.pid
百度后发现解决方法:
/data/server/mysql/bin/mysql_upgrade -uroot
原因是因为我系统里有一个旧版本的mysql,/etc/下有my.cnf,造成我初始化表结构用了旧版的。所以这里升级一下就可以了。
当然如果发现其他问题还可以百度解决。
因为编译的时候指定了默认字符集,所以my.cnf并不需要指明,就默认用UTF-8字符集了。我们可以用自带的mysql客户端看看:
/data/server/mysql/bin/mysql -uroot
mysql> show variables like '%character%';
+--------------------------+------------------------------------+
| Variable_name | Value |
+--------------------------+------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /data/server/mysql/share/charsets/ |
+--------------------------+------------------------------------+
8 rows in set (0.00 sec)
mysql> show variables like'%collation%';
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)
这里可看到,都是utf8。
为了安全,给mysql的root用户设置一个密码:
/data/server/mysql/bin/mysqladmin -uroot password "newpassword"
如果已经设置过密码了,要修改密码,则是使用如下方式:
/data/server/mysql/bin/mysqladmin -uroot -poldpassword password newpassword
如果编译安装的mysql想要拷贝到别的地方使用,只需要将整个mysql目录拷贝(mysql/data目录可以暂且移动到别处),放到/data/server/里面,修改mysql目录递归权限为mysql,然后创建mysql用户,初始化mysql数据库即可使用。
最后mysql目录占用了1.1GB空间。