之前完成了apache的安装配置,实现了web服务器的基础服务,可以通过纯html搭建一个简单的网站,如果要使用网站模板,就需要配置数据库服务,这里选择mariadb,同样命令也写到一个可执行文件内,下载后执行:

wget https://blog.nyankowo.com/bash/installmariadb.sh && chmod +x installmariadb.sh  && bash installmariadb.sh

删除原数据库

        部分系统会自带一个最小安装的数据库,如果有需要先把系统自带的删除:

find -H /etc/ |grep my.c #查找数据库配置文件
rm -rf /etc/my.cnf /etc/my.cnf.d/ #删除配置文件
rpm -qa |grep mariadb-libs #查找安装的自带数据库
rpm -e --nodeps mariadb-libs #删除自带的数据库

创建目录安装软件

        下载编译数据库,根据需要修改编译过程中指定的目录:

mkdir -pv /usr/local/mariadb/data /usr/local/mariadb/log /usr/local/mariadb/sock /usr/local/mariadb/etc
groupadd -r mysql
useradd -r -g mysql -s /sbin/nologin -d /usr/local/mariadb/data -M mysql
yum install ncurses-devel -y
wget https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-11.4.3/source/mariadb-11.4.3.tar.gz -P /usr/local/src
tar -xvf /usr/local/src/mariadb-11.4.3.tar.gz -C /usr/local/src && cd /usr/local/src/mariadb-11.4.3
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb -DMYSQL_DATADIR=/usr/local/mariadb/data -DSYSCONFDIR=/usr/local/mariadb/etc -DMYSQL_USER=mysql -DWITHOUT_TOKUDB=1 -DMYSQL_UNIX_ADDR=/usr/local/mariadb/sock/mysql.sock -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STPRAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LOBWRAP=0 && make && make install

配置自启

        添加数据库bin目录到系统环境变量,同时可以使用systemctl管理软件:

cat <<EOL | sudo tee /etc/systemd/system/mariadb.service
[Unit]
Description=MariaDB Database Server
After=network.target

[Service]
Type=simple
User=mysql
Group=mysql
ExecStart=/usr/local/mariadb/bin/mysqld --defaults-file=/usr/local/mariadb/etc/my.cnf
ExecStop=/bin/kill -TERM $MAINPID
PIDFile=/usr/local/mariadb/data/mysqld.pid
TimeoutSec=300

[Install]
WantedBy=multi-user.target
EOL

sudo systemctl daemon-reload
systemctl enable mariadb
systemctl start mariadb

sed -i '$aexport PATH=$PATH:/usr/local/mariadb/bin' /etc/profile
source /etc/profile

初始化数据库

        初始化数据库的时候,需要注释掉初始化脚本中的命令,否则报错,即对于scripts文件夹下的mysql_install_db文件,在490行左右,注释掉chown 0chmod 04755chown $userchmod 0700开头的四行。

        如果执行mysql_install_db时报错,提示找不到mysql.sock,去指定的目录下检查文件夹是否存在,如果目录下没有mysql.sock文件夹,则安装目录下则运行./bin/mariadbd-safe;如果有此文件夹,则运行./bin/mariadb-upgrade

chown -R mysql:mysql /usr/local/mariadb
chmod 777 -R /usr/local/mariadb

sed -i $'s/chown 0/#chown 0/g' /usr/local/mariadb/scripts/mysql_install_db
sed -i $'s/chmod 04/#chmod 04/g' /usr/local/mariadb/scripts/mysql_install_db
sed -i $'s/chown \$user \"\$p/#chown \$user \"\$p/g' /usr/local/mariadb/scripts/mysql_install_db
sed -i $'s/chmod 07/#chmod 07/g' /usr/local/mariadb/scripts/mysql_install_db
/usr/local/mariadb/scripts/mysql_install_db --user=mysql --datadir=/usr/local/mariadb/data

执行安全配置

        安装目录下运行./bin/mysql_secure_installation,执行数据库安全配置:

Enter current password for root (enter for none):     输入当前root密码(无,回车)
Switch to unix_socket authentication [Y/n]            是否启用socket授权(n)
Change the root password? [Y/n]                       是否修改root用户密码?(Y)
New password:                                         输入新root密码
Re-enter new password:                                确认输入root密码
Remove anonymous users? [Y/n]                         删除匿名用户?(Y)
Disallow root login remotely? [Y/n]                   不允许root登录远程?(Y)
Remove test database and access to it? [Y/n]          删除练习数据库(Y)
Reload privilege tables now? [Y/n]                    现在重新加载权限表(Y)

        最后在终端中,执行mysql命令,显示如下界面,即可正常使用数据库了:

apache_2