RockyLinux8.x和9.x以及Ubuntu 22.04.2的MariaDB10.11的安装(从源代码编译)

首先

最近,越来越多的MySQL用户开始转向使用MariaDB。这里做个笔记,记录一下编译和安装MariaDB 11.0.2的方法。截至2023年6月,”11.0.2″是最新版本。

实际环境版本信息

ソフトウェア バージョン CMake 3.26.3 ncruse 6.4 MariDB 11.0.2 OS RockeyLinux 8.x and 9 and Ubuntu 22.04.2

请留意以下事项

由于OpenSSL1.1不受支持,建议事先安装OpenSSL1.0.x。对于RockyLinux 9,建议使用OpenSSL 3.0.x系列。
注:见https://jira.mariadb.org/browse/MDEV-10332。

备好

创建一个用于运营的用户

useradd mysql

安装Cmake。

cd /usr/local/src
wget https://github.com/Kitware/CMake/archive/refs/tags/v3.27.0-rc3.tar.gz
tar xvzf v3.27.0-rc3.tar.gz
cd CMake-3.27.0-rc3


#環境変数を設定する
export OPENSSL_ROOT_DIR=/usr/local/ssl
export PKG_CONFIG_PATH=/usr/local/ssl/lib:$PKG_CONFIG_PATH
./configure
gmake -j 8
make install

如果发生错误

rm CMakeCache.txt

让我们执行并再次尝试一下。

安装ncruse

cd /usr/local/src
#ミラーサイトを利用する
wget http://invisible-mirror.net/archives/ncurses/ncurses-6.4.tar.gz
tar xvzf ncurses-6.4.tar.gz
cd ncurses-6.4
./configure --with-shared
make
make install

安装MariaDB

cd /usr/local/src
wget https://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/mariadb-11.0.2/source/mariadb-11.0.2.tar.gz
tar xvzf mariadb-11.0.2.tar.gz
cd mariadb-11.0.2

#export OPENSSL_ROOT_DIR=/usr/local/ssl
#export OPENSSL_INCLUDE_DIR=/usr/local/ssl/include
#export OPENSSL_LIBRARIES=/usr/local/ssl/lib/
#export OPENSSL_ROOT_DIR=/usr/local/ssl

/usr/local/bin/cmake \
-DPLUGIN_TOKUDB=NO 
#-OPENSSL_ROOT_DIR=/usr/local/ssl \
#-OPENSSL_INCLUDE_DIR=/usr/local/include \
#-OPENSSL_LIBRARIES=/usr/local/lib64 \
#-DDEFAULT_CHARSET=utf8 \
#-DDEFAULT_COLLATION=utf8_general_ci

make install -j 8

#
# もしくは、以下の方法でコンパイル
#
#BUILD/autorun.sh
#./configure --with-plugin-xtradb
#make 
#make install

#オーナーを設定
chown mysql:mysql -R /usr/local/mysql/


#設定ファイルをコピーする
#cp support-files/my-medium.cnf /etc/my.cnf
#cp etc/my.cnf.d/server.cnf /etc/my.cnf
cat > /etc/my.cnf << EOF
# These groups are read by MariaDB server.
# Use it for options that only the server (but not clients) should see
#
# See the examples of server my.cnf files in /usr/share/mysql/
#

# this is read by the standalone daemon and embedded servers
[server]

# this is only for the mysqld standalone daemon
[mysqld]
datadir=/usr/local/mysql/data
lc_messages_dir = /usr/local/mysql/share
socket          = /usr/local/mysql/run/mariadb/mysql.sock
bind-address = 0.0.0.0
innodb_compression_algorithm = none

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/usr/local/mysql/run/mariadb/mysql.pid


#
# * Galera-related settings
#
[galera]
# Mandatory settings
#wsrep_on=ON
#wsrep_provider=
#wsrep_cluster_address=
#binlog_format=row
#default_storage_engine=InnoDB
#innodb_autoinc_lock_mode=2
#
# Allow server to accept connections on all interfaces.
#
#bind-address=0.0.0.0
#
# Optional setting
#wsrep_slave_threads=1
#innodb_flush_log_at_trx_commit=0

# this is only for embedded server
[embedded]

# This group is only read by MariaDB servers, not by MySQL.
# If you use the same .cnf file for MySQL and MariaDB,
# you can put MariaDB-only options here
[mariadb]

# This group is only read by MariaDB-10.4 servers.
# If you use the same .cnf file for MariaDB of different versions,
# use this group for options that older servers don't understand
[mariadb-10.4]

[client]
socket          = /usr/local/mysql/run/mariadb/mysql.sock

EOF

创建初始的DB文件

su mysql
cd /usr/local/mysql
scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
exit

#ログの場所を作成
mkdir /var/log/mariadb
chown -R mysql:mysql /var/log/mariadb/

准备配置文件

启动脚本

cat > /usr/lib/systemd/system/mariadb.service << EOF
[Unit]
Description=MariaDB 10.8.3 database server
Documentation=man:mysqld(8)
Documentation=https://mariadb.com/kb/en/library/systemd/
After=network.target



[Service]
User=mysql
Group=mysql
Restart=always
Type=simple


ExecStart=/usr/local/mysql/bin/mysqld
ExecStop=/bin/kill \${MAINPID}
PIDFile=/usr/local/mysql/run/mariadb/mysql.pid

[Install]
WantedBy=multi-user.target

EOF

添加配置文件

・当系统提示找不到消息文件’/usr/share/errmsg.sys’时的解决方式
・由于CentOS7上的/tmp导致PID文件路径变更的操作影响

也要准备用于进程配置的目录

mkdir -p /usr/local/mysql/run/mariadb
chown mysql:mysql /usr/local/mysql/run/mariadb

最初设置密码

su mysql
/usr/local/mysql/bin/mysqld_safe --skip-grant-tables &
/usr/local/mysql/bin/mysql -u root
use mysql;
select * from user;
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
create user admin@'%' identified by 'password';
grant create on *.* to admin@'%';
exit

##一度Mariadbを停止する
/usr/local/mysql/bin/mysqladmin -u root -p shutdown
#パスワードを聞かれたら先ほど設定したパスワードを入力し、Enterキーを押す

服务的设置

服务的启动和自动启动注册。

systemctl enable mariadb
systemctl start mariadb

启动后的用户设置 de

su mysql
./mysql -u mysql
alter user 'root'@'localhost' identified BY 'パスワード';
exit

关于include文件

在编译PHP7.1.x的mysqli模块时,可能会遇到”my_list.h”文件不存在的错误。这是因为安装后缺少一些头文件。为了解决这个问题,我会提供以下解决方案。

mv /usr/local/mysql/include /usr/local/mysql/include.def
mkdir -p /usr/local/mysql/include/mysql
chown -R mysql:mysql /usr/local/mysql/include
cd /usr/local/src/mariadb-10.5.10/include
cp -rf ./* /usr/local/mysql/include/mysql
bannerAds