とほほのMySQL/MariaDB入門
目次
- MySQL とは
- MariaDB とは
- MySQL/MariaDBをインストール・起動する
- コンフィグファイルを変更する
- 最低限やっておきたい設定
- セキュリティ関連の初期設定を行う
- インタラクティブモードで接続する
- ユーザ
- データベース
- テーブル
- レコード
- その他
MySQL とは
- スウェーデンの MySQL AB社によって開発・公開されていたリレーショナルデータベース。
- 商用・有料の Oracle に対する、オープンソース系 RDB として、PostgreSQL とシェアを二分している。
- GPL と商用ライセンスのデュアルライセンスで提供されている。
- クライアントライブラリも基本的には GPL のため、クライアントライブラリを利用するソフトを配布する場合はソースコードの公開が必要。
- ただし、ソフトが Apache 2.0、BSDライセンス、MITライセンス、PHPライセンスなど、FOSS と呼ばれるオープンソースライセンスとして配布される場合は、GPL の呪縛がはずれ、それぞれのソフトのライセンスとして配布が可能。例えば、PHP から MySQL クライアントを利用する際は、PHP ライセンスとして利用可能。
→ http://www-jp.mysql.com/about/legal/licensing/foss-exception/ - 2008年に MySQL AB社が Sun Microsystems社に買収され、2010年に Sun Microsystems社が Oracle社に買収されたことから、現在では Oracle社が開発・公開を継続しており、このライセンス形態が継続するかは不明。
- 各バージョンのサポート期限は EndOfLife を参照。
MariaDB とは
- MySQL の「妹分」的なリレーショナルデータベース。
- MySQL が Oracle 社の傘下に入ったこともあり、MySQL AB 社の創設者 Michael "Montry" Widenius 氏が、MySQL から分離し、MySQL 互換の RDB として公開したもの。
- Red Hat Enterprise Linux 7、CentOS 7、Fedora 19 などはすでに標準の RDB を MySQL から MariaDB に変更している。
- MySQL 5.1 と MariaDB 5.1 や、MySQL 5.5 と MariaDB 5.5 はほぼ互換性あり。
- MySQL 5.6 と MariaDB は徐々に独自の強化を行うようになり、MariaDB 5.6 ではなく、MariaDB 10.0 として公開された。
- サーバーのライセンスは GPL のままだが、クライアントのライセンスは LGPL に変更された。(ライブラリとして利用するのであればソースコード公開は不要)
- MariaDB という名前は、Widenius氏の次女の名前から命名された。実は、MySQL の My も同氏の長女の名前から命名されている。
- 各バージョンのサポート期限は EndOfLife を参照。
MySQL/MariaDBをインストール・起動する
コンテナ # docker run -d --name mydb -e MYSQL_ROOT_PASSWORD=root123 mariadb \ mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci # docker exec -it mydb mysql -h 127.0.0.1 -u root -proot123 CentOS 6 (MySQL 5.1) # yum install -y mysql mysql-server # chkconfig mysqld on # service mysqld start CentOS 7 (MariaDB 5.5) # yum install -y mariadb mariadb-server # systemctl enable mariadb # systemctl start mariadb CentOS 8 (MariaDB 10.3) # dnf install -y mariadb mariadb-server # systemctl enable mariadb # systemctl start mariadb CentOS 8 (MariaDB 10.4) # curl -O https://downloads.mariadb.com/MariaDB/mariadb-10.4.8/yum/centos/mariadb-10.4.8-rhel-8-x86_64-rpms.tar # tar xvf mariadb-10.4.8-rhel-8-x86_64-rpms.tar # cd mariadb-10.4.8-rhel-8-x86_64-rpms # dnf localinstall -y \ galera-4-26.4.2-1.rhel8.0.el8.x86_64.rpm \ MariaDB-client-10.4.8-1.el8.x86_64.rpm \ MariaDB-common-10.4.8-1.el8.x86_64.rpm \ MariaDB-server-10.4.8-1.el8.x86_64.rpm \ MariaDB-shared-10.4.8-1.el8.x86_64.rpm Ubuntu 14.04 (MariaDB 5.5) # sudo apt-get install -y mariadb-server # sudo service mysql start Ubuntu 16.04 (MariaDB 10.0) # sudo apt-get install -y mariadb-server # sudo service mysql start Ubuntu 18.04 (MariaDB 10.1) # sudo apt-get install -y mariadb-server # sudo service mysql start Ubuntu 18.04 (MariaDB 10.4) # curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash # sudo apt-get install -y mariadb-server-10.4
コンフィグファイルを変更する
CentOS 6/7/8 # vi /etc/my.cnf Ubuntu 14.04 LTS # sudo vi /etc/mysql/my.cnf
最低限やっておきたい設定
my.cnf に下記を追記します。
[mysqld] # 文字コードを utf8mb4 にする character-set-server=utf8mb4 # バイナリログを取得する log-bin=mysql-bin max_binlog_size=256M expire_logs_days=7 # スロークエリログを取得する slow_query_log=1 [client] # 文字コードを utf8mb4 にする default-character-set=utf8mb4
セキュリティ関連の初期設定を行う
# mysql_secure_installation Enter current password for root (enter for none): 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 -h localhost -u root -p Enter password: mysql> quit
ユーザ
ユーザを作成する mysql> create user ユーザ名 identified by 'パスワード'; ユーザに権限を付与する mysql> grant all on データベース名.テーブル名 to ユーザ名;
データベース
データベースを作成する mysql> create database データベース名; データベースを利用する mysql> use データベース名; データベースの一覧を表示する mysql> show databases; データベースを削除する mysql> drop database データベース名;
テーブル
テーブルを作成する mysql> create table テーブル名 ( カラム1 型1, カラム2 型2, ...); テーブルの一覧を表示する mysql> show tables; テーブルの詳細を表示する mysql> desc テーブル名; テーブルを削除する mysql> drop table テーブル名;
レコード
レコードを挿入する mysql> insert into テーブル名 ( カラム1, カラム2 ) values ( 値1, 値2 ); レコードを表示する mysql> select カラム1, カラム2 from テーブル名; 条件を指定してレコードを表示する mysql> select カラム1, カラム2 from テーブル名 where カラム1 = 値1; レコードを更新する mysql> update テーブル名 set カラム2 = 値2 where カラム1 = 値1; レコードを削除する mysql> delete from テーブル名 where カラム1 = 値1;
その他
Copyright (C) 2016-2022 杜甫々
初版:2016年6月26日 最終更新:2022年10月5日
https://www.tohoho-web.com/ex/mysql.html