在公网IP为x.x.x.x,安装CentOS8(Alibaba Cloud Linux 3.2104 LTS 64位)系统的服务器上进行源码安装mariadb-10.5.16。
MariaDB源码下载
第一步,进入到MariaDB官网下载对应版本的MariaDB源码。
下载地址:Download MariaDB Server - MariaDB.org
第二步,下载源码安装包mariadb-10.5.16.tar.gz。
MariaDB源码配置
linux文件管理工具:WinSCP 5.14.4
linux系统版本:CentOS8 64位
安装源码文件版本:mariadb-10.5.16.tar.gz
第一步,安装前,检测系统是否自带安装MySQL。
命令:rpm -qa | grep mysql
若结果显示类似“mysql-libs-5.1.52-1.el6_0.1.x86_64”,则可以选择进行卸载。
# 普通删除模式
rpm -e mysql-libs-5.1.52-1.el6_0.1.x86_64
# 如果使用普通删除模式命令删除时,提示有依赖的其它文件,则用强力删除模式命令对其进行强力删除
rpm -e --nodeps mysql-libs-5.1.52-1.el6_0.1.x86_64
第二步,检查否存在mariadb数据库。
命令:rpm -qa | grep mariadb
若结果显示类似“mariadb-libs-5.5.56-2.el7.x86_64”,则可以选择进行卸载。
命令:rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
第三步,用WinSCP工具将mariadb-10.5.16.tar.gz上传到公网IP地址为x.x.x.x的服务器中的/usr/local/src目录下面。
第四步,安装依赖(如缺少其他依赖,需自行安装)。
命令:yum install -y autoconf cmake gcc gcc-c++ bison bison-devel libaio-devel libcurl-devel libarchive-devel boost-devel libevent-devel ncurses-devel openssl-devel zlib zlib-devel
第五步,添加系统mysql组和mysql用户。
检查mysql组和用户是否存在。
命令:cat /etc/group | grep mysql
若结果显示“mysql:x:1002:”,则说明mysql组存在,无需再添加。
cat /etc/passwd | grep mysql
若结果显示“mysql:x:994:1002::/home/mysql:/bin/bash”,则说明mysql用户存在,无需再添加。
若结果显示mysql组和用户不存在,则执行添加命令。
命令:useradd mysql
(groupadd mysql
useradd -r -g mysql mysql)
#useradd -r参数表示mysql用户是系统用户,不可用于登录系统
MariaDB源码安装
第一步,创建data文件夹。
命令:mkdir -p /data/mysql/data
第二步,进入安装包所在目录,解压文件,并重命名文件。
解压文件命令:cd /usr/local/src
tar -zxvf mariadb-10.5.16.tar.gz
第三步,编译安装mysql。
命令:cd /usr/local/src/mariadb-10.5.16
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mariadb-10.5.16 \
-DMYSQL_UNIX_ADDR=/usr/local/mariadb-10.5.16/tmp/mysql.sock \
-DMYSQL_DATADIR=/data/mysql/data \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1
若结果显示“Build files have been written to: /usr/local/src/mariadb-10.5.16”,则mysql配置成功。
# make需要花费较长时间(一般不推荐编译安装mariadb)
命令:make && make install
第四步,配置环境变量。
在/etc/profile文件中加入下面的代码:
export PATH=/usr/local/mariadb-10.5.16/bin/:$PATH
文件生效命令:source /etc/profile
第五步,在/usr/local/mariadb-10.5.16/support-files目录下新建my.cnf文件。
my.cnf文件中写入下面的代码:
[mysqld]
basedir = /usr/local/mariadb-10.5.16
datadir = /data/mysql/data
user = mysql
port = 3306
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
lower_case_table_names = 1
第六步,将目录/usr/local/mariadb-10.5.16和/data/mysql/data的所有者及所属组改为mysql,并赋予权限。
命令:chown -R mysql:mysql /usr/local/mariadb-10.5.16
chown -R mysql:mysql /data/mysql/data
chmod -R 755 /usr/local/mariadb-10.5.16
chmod -R 755 /data/mysql/data
第七步,初始化数据库。
命令:yum -y install perl perl-devel
yum -y install libaio
cd /usr/local/mariadb-10.5.16
./scripts/mariadb-install-db --user=mysql --basedir=/usr/local/mariadb-10.5.16 --datadir=/data/mysql/data
第八步,数据库初始化后,登录mysql不需要密码。
第九步,进入/usr/local/mariadb-10.5.16/support-files,启动mysql服务。
命令:cd /usr/local/mariadb-10.5.16/support-files
./mysql.server start
若结果显示“The server quit without updating PID file”,则很大可能是目录/usr/local/mariadb-10.5.16和/data/mysql/data的权限问题。数据库存放目录的权限一定要赋予/data/mysql/data。然后再次初始化数据库和启动mysql服务,若结果显示“SUCCESS!”,则成功。
第十步,把启动脚本放到开机初始化目录。
命令:cd /usr/local/mariadb-10.5.16/support-files
cp mysql.server /etc/init.d/mysql
赋予可执行权限命令:chmod +x /etc/init.d/mysql
添加服务命令:chkconfig --add mysql
第十一步,登录mysql,不需要密码。
命令:cd /usr/local/mariadb-10.5.16/bin
./mysql -u root -p
若结果显示“MariaDB [(none)]> ”,则说明数据库登录成功了;结果显示“ Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)”,则说明数据库登录不成功,mysql服务没有启动,那就再次初始化数据库和启动mysql服务。最后再次登录mysql。
第十二步,数据库安装设置,重置数据库root账号密码,执行该命令前必须开启mysql服务。
命令:mysql_secure_installation
或 /usr/local/mariadb-10.5.16/bin/mysql_secure_installation
若结果显示“Enter current password for root (enter for none):”,
则输入当前root账号密码,刚安装默认为空,直接回车即可。
“Set root password? [Y/n]”,输入y回车。
“New password:”,输入密码。
“Re-enter new password:”,重复输入密码。
“Remove anonymous users? [Y/n]”,输入y回车。
“Disallow root login remotely? [Y/n]”,输入y回车。
“Remove test database and access to it? [Y/n]”,输入y回车。
“Reload privilege tables now? [Y/n]”,输入y回车。
第十三步,登陆测试,执行登录命令并输入密码。
命令:mysql -uroot -p
输入登录密码“123456”,进入MariaDB shell状态。
第十四步,重启mysql生效。
命令:service mysql stop
service mysql start
service mysql restart