#author("2025-04-04T12:38:19+00:00","default:iseki","iseki") #author("2025-04-08T08:29:31+00:00","default:iseki","iseki") * MariaDB [#ad1bc391] - MySQL の権利を Oracle が取得したことにより,MySQLからスピンアウトした MySQL互換DB - Maria は開発チームのリーダの娘の名前らしい. - See also [[MySQL]] ** 操作 *** Backup & Restore (高速) - mysqldump より高速? - ディレクトリ構造をそのままバックアップ **** Backup mariadb-backup --backup --databases=jogrid_db --target-dir=/opt/Backup --user=root --password=**** **** Restore systemctl stop mariadb mariadb-backup --prepare --databases=jogrid_db --target-dir=/opt/Backup mariadb-backup --copy-back --databases=jogrid_db --target-dir=/opt/Backup ** Setup *** 設定ファイル <pre> # vi /etc/my.cnf # chmod a+r /etc/my.cnf </pre> **** /etc/my.cnf <pre> [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock </pre> *** DBの初期化 <pre> # mysql_install_db --user=mysql --ldata=/var/lib/mysql --basedir=/usr </pre> *** パスワード設定 <pre> # systemctl start mariadb.service # mariadb-admin -u root password </pre> **** サーバへのアクセス制限がある場合 - -h オプションを指定する. <pre> # mariadb-admin -u root -h localhost password パスワード </pre> *** 匿名,パスワード無しユーザの削除 <pre> MariaDB [(none)]> use mysql; MariaDB [mysql]> select Host,User,Password from user; MariaDB [mysql]> set password for 'mariadb.sys'@localhost=password('set_password'); (set_password:パスワードは変える) MariaDB [mysql]> select Host,User,Password from user; MariaDB [mysql]> delete from user where password=''; ('' はシングルクォーテーション2個) MariaDB [mysql]> select Host,User,Password from user; MariaDB [mysql]> flush privileges; MariaDB [mysql]> exit </pre> *** データベース作成例 <pre> $ mariadb -u root -p Enter password: パスワード MariaDB [(none)]> create database db_name default character set utf8; (または utf8mb4) MariaDB [(none)]> grant all on db_name.* to db_name_user identified by 'db_name_pass'; MariaDB [(none)]> flush privileges; MariaDB [(none)]> exit </pre> - サーバへのアクセス制限がある場合は,ユーザ名を db_name_user@localhost などとする. ** Install *** Compile - [[Compile and Setup>./Compile]] *** Rocky Linux 9 + 11.2 <pre> curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash -s -- --mariadb-server-version=11.2 dnf -q module disable mariadb dnf module reset mariadb dnf rm mariadb dnf install MariaDB-server MariaDB-client MariaDB-backup vim mariadb -V dnf install php-mysqlnd </pre> *** Rocky Linux 8 + 10.5.22 [#bf0d63f0] # vi /etc/yum.repos.d/mariadb.repo [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.5/rhel8-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1 module_hotfixes=1 # rpm --import https://yum.mariadb.org/RPM-GPG-KEY-MariaDB # systemctl stop mariadb # yum remove mariadb-server # yum remove mariadb-10.3.35 # dnf install MariaDB-server MariaDB-client # rpm -qa|grep MariaDB # systemctl start mariadb *** CentOS7 + MariaDB-10.6.7 [#x12ae582] **** from Source Code [#h73ec3d2] - 先に openssl-1.1.1g をインストール - コンパイル mkdir build cd build/ cmake -DWITH_READLINE=true -DWITHOUT_TOKUDB_STORAGE_ENGINE=true -DHAVE_SYSTEMD=true -DOPENSSL_ROOT_DIR=/usr/local/ssl .. make systemctl stop mariadb make install systemctl start mariadb ps ax|grep maria ps ax|grep mysql ** Trouble Shooting *** Rocky Linux 9 **** パスワード無し - root の場合, mariadb -u root でログインできるのだが.... **** Database MariaDB is probably initialized in /var/lib/mysql already, nothing is done. - ログを確認する. **** max_open_files to more than 32768 (request: 66655) <pre> # vi /usr/lib/systemd/system/mariadb.service LimitNOFILE=100000 LimitMEMLOCK=100000 # systemctl daemon-reload # systemctl start mariadb </pre> **** Can't create test file '/var/lib/mysql/blackjack.lower-test' - データベースディレクトリがリンボリックリンクだと v11 で発生? - [[SELinux]] 関係か? *** Rocky Linux 7/8 **** Incorrect definition of table mysql.column_stats: expected column 'histogram' at position 10 to have type longblob, found type varbinary(255) - データベースをアップグレードする. <pre> # cd /var/log # ln -s mariadb mysql # mariadb-upgrade -u root -p # systemctl restart mariadb </pre>