#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>

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 ページ一覧 検索 最終更新   ヘルプ   最終更新のRSS