之前对 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 的博文…

Bash
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 目录。

Bash
cd /usr/local/src/mysql-5.6.30
# 为 mysql 添加用户和组
groupadd mysql
useradd -s /sbin/nologin -M -g 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 进行配置了。

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

# 以下一大段重写了 /etc/my.cnf 文件
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

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

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

# 添加动态库的缓存
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)

Bash
/etc/init.d/mysqld start

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


六、MySQL 安全设置

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

 

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

本文的安装方法结合了 https://teddysun.com/410.html 的方法。


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