とほほのMySQL/MariaDB入門

目次

MySQL とは

MariaDB とは

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;

その他