之前对 Apache 2.4 进行了编译安装,详情见《编译安装LAMP:Apache篇》。接着,我们继续安装数据库。

 

现在用的比较多的是由 Oracle 团队开发维护的 MySQL,和由原 MySQL 团队开发维护的 MariaDB,这里我依旧选择 MySQL 数据库。

 

一、用 root 用户连接上主机

 

二、下载 MySQL Community Server

可以在 MySQL 的官网下载最新的 5.6 版本的 MySQL(GA),5.7 版 MySQL 在安装配置方面与 5.6 有些许变化。选择时选 Source Code,找到最下面的 Generic Linux,文件格式为 mysql-版本.tar.gz。本文以 mysql-5.6.30 为例,使用时请使用最新版,命令只要替换版本号就行了。

可以通过 Tag 看看有没有关于 MySQL 5.7 的博文…

cd /usr/local/src
wget http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.30.tar.gz
tar -zxf mysql-5.6.30.tar.gz

 

三、编译安装 MySQL Community Server

MySQL 的编译安装时间比较长,经过了漫长的 5 分钟等待,MySQL 终于编译安装完成了。

神马?你说你编译花了半个多小时?你用了几个核心呢?E3 8 核只要 5 分钟╮( ̄▽ ̄)╭

我们使用 cmake 命令编译 MySQL,本文 MySQL 安装在 /usr/local/mysql 目录。

cd /usr/local/src/mysql-5.6.30
groupadd mysql
useradd -s /sbin/nologin -M -g mysql mysql
#为mysql添加用户和组
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_EMBEDDED_SERVER=1
make
make install

 

更多关于 cmake 编译 MySQL 的选项,请参考官方文档和 maxchen’s blog(艹,我就知道别人的博客不靠谱,随随便便就没了…还是自己写靠谱)。

 

四、设置 MySQL

经过一段时间的安装,把 MySQL 安装完成,接下来就需要对 MySQL 进行配置了。

chown -R mysql:mysql /usr/local/mysql
#把mysql文件夹的所有者和所有组都设置为mysql

cat > /etc/my.cnf << EOF
[client]
#password = your_password
port = 3306
socket = /tmp/mysql.sock

[mysqld]
port = 3306
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
pid-file = /usr/local/mysql/data/mysql.pid
character-set-server = utf8
skip-external-locking
key_buffer_size = 16M
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
query_cache_size = 64M
query_cache_limit = 4M
table_open_cache = 64
skip-name-resolve
server-id = 1
#max_connections = 1000
max_allowed_packet = 16M

[mysqldump]
quick max_allowed_packet = 16M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout
EOF
#以上一大段重写了/etc/my.cnf文件

/usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
#初始化配置脚本,添加系统数据库

cp -f /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
#拷贝服务脚本到/etc/init.d/
chkconfig --add mysqld
#将mysqld设置为服务
chkconfig mysqld on
#将httpd的2、3、4、5运行级设置为On,即开机启动
echo "export PATH=\$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile
#将mysql的可执行文件路径注册到环境变量,即直接输入mysql就能登陆mysql

cat > /etc/ld.so.conf.d/mysql.conf << EOF
/usr/local/mysql/lib
EOF
#添加动态库的缓存
ldconfig
#使上述更改生效

更多关于 my.cnf 的解释,见这里这里

UPDATE:博主发现,原本的 my.cnf 会导致 mysqld 服务无法启动,这情况不是每台服务器都会发生的,我在 Azure 的服务器上配置完全没问题,但是在 DO 的服务器上就一直报错。原因是在 max_connections = 1000 这一条上,这条配置原本是设置 MySQL 的最大连接数的,但是很奇怪的,它使得我在 DO 的服务器上的 MySQL 服务无法启动。不明觉厉啊…

 

五、启动 MySQL

MySQL 的启动、关闭、重启、状态命令:/etc/init.d/mysqld (start|stop|restart|status)

/etc/init.d/mysqld start

一般情况下 MySQL 都能正常启动,至少按照博主的方法来是会成功的,如果有问题请留言。

 

六、MySQL 安全设置

这里新开了一篇博文来写 MySQL 的安全设置:《MySQL安全设置》

 

相关文章:《编译安装LAMP:Apache篇》《编译安装LAMP:PHP篇》

本文的安装方法结合了http://teddysun.com/lamp的方法。


原创文章,转载请以链接形式注明出处:https://blog.ttionya.com/article-463.html