之前对 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
# 为 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 进行配置了。
# 把 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
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 篇》
本文的安装方法结合了 https://teddysun.com/410.html 的方法。
原创文章,转载请以链接形式注明出处:https://blog.ttionya.com/article-463.html