hana_shinのLinux技術ブログ

Linuxの技術情報を掲載しています。特にネットワークをメインに掲載していきます。

MariaDBの使い方



1 MariaDBとは?

MySQLの派生として開発されている、オープンソース関係データベース管理システム (RDBMS) です。

2 環境

CentOS版数は以下のとおりです。

[root@server ~]# cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)

カーネル版数は以下のとおりです。

[root@server ~]# uname -r
3.10.0-1160.el7.x86_64

3 パッケージのインストール

下記公式ページの説明にしたがって、パッケージをインストールします。
https://mariadb.com/kb/en/yum/

下記コマンドを実行してyum レポジトリを設定します。

[root@server ~]# curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
# [info] Checking for script prerequisites.
# [warning] Found existing file at /etc/yum.repos.d/mariadb.repo. Moving to /etc/yum.repos.d/mariadb.repo.old_1
# [info] MariaDB Server version 10.7 is valid
# [info] Repository file successfully written to /etc/yum.repos.d/mariadb.repo
# [info] Adding trusted package signing keys...
/etc/pki/rpm-gpg ~
~
# [info] Successfully added trusted package signing keys
# [info] Cleaning package cache...
読み込んだプラグイン:fastestmirror
リポジトリーを清掃しています: base epel extras mariadb-main mariadb-maxscale mariadb-tools updates
Other repos take up 531 M of disk space (use --verbose for details)

追加されたリポジトリを確認します。mariadb-main,mariadb-maxscale,mariadb-toolsの3つのリポジトリが追加されたことがわかります。

[root@server ~]# cat /etc/yum.repos.d/mariadb.repo

[mariadb-main]
name = MariaDB Server
baseurl = https://dlm.mariadb.com/repo/mariadb-server/10.7/yum/rhel/7/x86_64
gpgkey = file:///etc/pki/rpm-gpg/MariaDB-Server-GPG-KEY
gpgcheck = 1
enabled = 1

[mariadb-maxscale]
# To use the latest stable release of MaxScale, use "latest" as the version
# To use the latest beta (or stable if no current beta) release of MaxScale, use "beta" as the version
name = MariaDB MaxScale
baseurl = https://dlm.mariadb.com/repo/maxscale/latest/yum/rhel/7/x86_64
gpgkey = file:///etc/pki/rpm-gpg/MariaDB-MaxScale-GPG-KEY
gpgcheck = 1
enabled = 1

[mariadb-tools]
name = MariaDB Tools
baseurl = https://downloads.mariadb.com/Tools/rhel/7/x86_64
gpgkey = file:///etc/pki/rpm-gpg/MariaDB-Enterprise-GPG-KEY
gpgcheck = 1
enabled = 1
[root@server ~]#

リポジトリを追加したので、MariaDB-serverパッケージをインストールします。

[root@server ~]# yum -y install MariaDB-server

MariaDBの版数を確認します。

[root@server ~]# mariadb -V
mariadb  Ver 15.1 Distrib 10.7.4-MariaDB, for Linux (x86_64) using readline 5.1

4 mariadbサービスの起動方法

mariadbサービスを起動します。

[root@server ~]# systemctl start mariadb.service

mariadbサービスの状態を確認します。activeであることがわかります。

[root@server ~]# systemctl status mariadb.service
● mariadb.service - MariaDB 10.7.4 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/mariadb.service.d
           mqmigrated-from-my.cnf-settings.conf
   Active: active (running) since 金 2022-06-10 20:03:01 JST; 52s ago
     Docs: man:mariadbd(8)
           https://mariadb.com/kb/en/library/systemd/
  Process: 1532 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
  Process: 1504 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= ||   VAR=`cd /usr/bin/..; /usr/bin/galera_recovery`; [ $? -eq 0 ]   && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited, status=0/SUCCESS)
  Process: 1501 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
 Main PID: 1515 (mariadbd)
   Status: "Taking your SQL requests now..."
   CGroup: /system.slice/mariadb.service
           mq1515 /usr/sbin/mariadbd

 6月 10 20:03:01 server mariadbd[1515]: 2022-06-10 20:03:01 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB.
 6月 10 20:03:01 server mariadbd[1515]: 2022-06-10 20:03:01 0 [Note] InnoDB: 10.7.4 started; log sequence number 42219; transaction id 14
 6月 10 20:03:01 server mariadbd[1515]: 2022-06-10 20:03:01 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
 6月 10 20:03:01 server mariadbd[1515]: 2022-06-10 20:03:01 0 [Note] Plugin 'FEEDBACK' is disabled.
 6月 10 20:03:01 server mariadbd[1515]: 2022-06-10 20:03:01 0 [Note] InnoDB: Buffer pool(s) load completed at 220610 20:03:01
 6月 10 20:03:01 server mariadbd[1515]: 2022-06-10 20:03:01 0 [Note] Server socket created on IP: '0.0.0.0'.
 6月 10 20:03:01 server mariadbd[1515]: 2022-06-10 20:03:01 0 [Note] Server socket created on IP: '::'.
 6月 10 20:03:01 server mariadbd[1515]: 2022-06-10 20:03:01 0 [Note] /usr/sbin/mariadbd: ready for connections.
 6月 10 20:03:01 server mariadbd[1515]: Version: '10.7.4-MariaDB'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MariaDB Server
 6月 10 20:03:01 server systemd[1]: Started MariaDB 10.7.4 database server.

5 事前準備

5.1 文字コード設定

/etc/my.cnf.d/server.cnfにcharacter-set-server=utf8を追加します。

[root@server ~]# diff -Nur /etc/my.cnf.d/server.cnf.org /etc/my.cnf.d/server.cnf
--- /etc/my.cnf.d/server.cnf.org        2022-06-10 21:52:08.090551505 +0900
+++ /etc/my.cnf.d/server.cnf    2022-06-10 21:52:24.831679371 +0900
@@ -38,6 +38,7 @@
 # If you use the same .cnf file for MySQL and MariaDB,
 # you can put MariaDB-only options here
 [mariadb]
+character-set-server=utf8

 # This group is only read by MariaDB-10.7 servers.
 # If you use the same .cnf file for MariaDB of different versions,

5.2 管理者の登録

mariadb管理者のパスワードを設定します。ここでは、管理者パスワードとしてadminを設定します。

[root@server ~]# mysqladmin -u root password 'admin'

6 データベースの作成、削除方法

mysqlモニタを起動します。パスワードは、先ほど設定したadminを入力します。

[root@server ~]# mysql -u root -p
Enter password:
-snip-

6.1 データベースの作成方法

デフォルトの状態を確認します。デフォルトでは、下記5つのデータベースが登録されていることがわかります。

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
5 rows in set (0.001 sec)

testdbという名前のデータベースを作成します。

MariaDB [(none)]> create database testdb;
Query OK, 1 row affected (0.001 sec)

作成したデータベースを確認します。testdbが作成されたことがわかります。

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
| testdb             |
+--------------------+
6 rows in set (0.001 sec)

6.2 データベースの削除方法

testdbを削除します。

MariaDB [(none)]> drop database testdb;
Query OK, 0 rows affected (0.046 sec)

データベースを確認します。testdbが削除されたことがわかります。

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
5 rows in set (0.001 sec)

7 テーブルに対する操作

testdbデータベースにcustomerテーブルを作成してみます。
まず、testdbという名前のデータベースを作成します。

MariaDB [(none)]> create database testdb;
Query OK, 1 row affected (0.001 sec)

使用するデータベースをtestdbに切り替えます。

MariaDB [(none)]> use testdb
Database changed

statusコマンドを使って、現在使用しているデータベースを確認します。Current databaseがtestdbになっていることがわかります。また、MariaDBのプロンプトがnoneからtestdbに変更されたことからも、
データベースがtestdbに変更されたことがわかります。

MariaDB [testdb]> status;
--------------
mysql  Ver 15.1 Distrib 10.7.4-MariaDB, for Linux (x86_64) using readline 5.1

Connection id:          4
Current database:       testdb
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server:                 MariaDB
Server version:         10.7.4-MariaDB MariaDB Server
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    utf8mb3
Db     characterset:    latin1
Client characterset:    utf8mb3
Conn.  characterset:    utf8mb3
UNIX socket:            /var/lib/mysql/mysql.sock
Uptime:                 2 min 20 sec

Threads: 1  Questions: 22  Slow queries: 0  Opens: 17  Open tables: 10  Queries per second avg: 0.157
--------------

7.1 テーブルの作成方法(create)

testdbデータベースにcustomerテーブルを作成します。customerテーブルは、名前(name)と年齢(age)のカラムを指定して作成します。

MariaDB [testdb]> create table customer (name varchar(32), age tinyint unsigned);
Query OK, 0 rows affected (0.066 sec)

テーブルを確認します。customerという名前のテーブルが作成されたことがわかります。

MariaDB [testdb]> show tables;
+------------------+
| Tables_in_testdb |
+------------------+
| customer         |
+------------------+
1 row in set (0.000 sec)

7.2 カラム情報を取得する方法

customerテーブルのカラム情報を取得します。名前(name)と年齢(age)のカラムを確認することができます。

MariaDB [testdb]> show columns from customer;
+-------+---------------------+------+-----+---------+-------+
| Field | Type                | Null | Key | Default | Extra |
+-------+---------------------+------+-----+---------+-------+
| name  | varchar(32)         | YES  |     | NULL    |       |
| age   | tinyint(3) unsigned | YES  |     | NULL    |       |
+-------+---------------------+------+-----+---------+-------+
2 rows in set (0.002 sec)

7.3 テーブルの削除方法(drop)

testdbデータベースからcustomerテーブルを削除します。

MariaDB [testdb]> drop table customer;
Query OK, 0 rows affected (0.034 sec)

customerテーブルが削除されたことがわかります。

MariaDB [testdb]> show tables;
Empty set (0.000 sec)

7.4 テーブルの名前を変更する方法(alter)

customerという名前のテーブルをcustomer_newに変更します。

MariaDB [testdb]> alter table customer rename customer_new;
Query OK, 0 rows affected (0.020 sec)

テーブルの名前を確認します。テーブルの名前が、customer_newに変更されたことがわかります。

MariaDB [testdb]> show tables;
+------------------+
| Tables_in_testdb |
+------------------+
| customer_new     |
+------------------+
1 row in set (0.001 sec)

テーブルの名前をcustomerに戻します。

MariaDB [testdb]> alter table customer_new rename customer;
Query OK, 0 rows affected (0.018 sec)

7.5 データを登録する方法(insert)

customerテーブルに名前(suzuki-san)と年齢(40)を登録します。

MariaDB [testdb]> insert into customer values("suzuki-san",40);
Query OK, 1 row affected (0.004 sec)

テーブルを確認します。customerテーブルに名前(name)と年齢(age)が登録されたことがわかります。

MariaDB [testdb]> select name,age from customer;
+------------+------+
| name       | age  |
+------------+------+
| suzuki-san |   40 |
+------------+------+
1 row in set (0.000 sec)

7.6 データを更新する方法(update)

suzuki-sanの年齢を40歳から30歳に変更してみます。

MariaDB [testdb]> update customer set age=30 where age=40;
Query OK, 1 row affected (0.003 sec)
Rows matched: 1  Changed: 1  Warnings: 0

データを確認します。suzuki-sanの年齢が40歳から30歳に変更されたことがわかります。

MariaDB [testdb]> select name,age from customer;
+------------+------+
| name       | age  |
+------------+------+
| suzuki-san |   30 |
+------------+------+
1 row in set (0.000 sec)

7.7 データを削除する方法(delete,where)

MariaDB [testdb]> delete from customer where name='suzuki-san';
Query OK, 1 row affected (0.004 sec)
MariaDB [testdb]> select name,age from customer;
Empty set (0.000 sec)

7.8 データを一括削除する方法(delete)

testdbに登録されているデータを確認します。

MariaDB [testdb]> select name,age from customer;
+------------+------+
| name       | age  |
+------------+------+
| suzuki-san |   40 |
| kato-san   |   45 |
+------------+------+
2 rows in set (0.000 sec)

テーブルからデータを一括削除します。

MariaDB [testdb]> delete from customer;
Query OK, 2 rows affected (0.003 sec)

テーブルを確認します。データが削除されたことがわかります。

MariaDB [testdb]> select name,age from customer;
Empty set (0.000 sec)

7.9 カラムの追加方法(alter table add)

既存のカラム(name,age)に対して、住所(addres)のカラムを追加してみます。

MariaDB [testdb]> select name,age from customer;
+------------+------+
| name       | age  |
+------------+------+
| suzuki-san |   40 |
| kato-san   |   45 |
+------------+------+
2 rows in set (0.000 sec)

customerテーブルに住所(addres)カラムを追加してみます。

MariaDB [testdb]> alter table customer add address varchar(32);
Query OK, 0 rows affected (0.067 sec)
Records: 0  Duplicates: 0  Warnings: 0

customerテーブルを確認します。住所(address)カラムが追加されたことがわかります。

MariaDB [testdb]> show columns from customer;
+---------+---------------------+------+-----+---------+-------+
| Field   | Type                | Null | Key | Default | Extra |
+---------+---------------------+------+-----+---------+-------+
| name    | varchar(32)         | YES  |     | NULL    |       |
| age     | tinyint(3) unsigned | YES  |     | NULL    |       |
| address | varchar(32)         | YES  |     | NULL    |       |
+---------+---------------------+------+-----+---------+-------+
3 rows in set (0.001 sec)

7.10 カラムの削除方法(alter table drop)

customerテーブルのカラムを確認します。name,age,addressの3つのカラムが存在することがわかります。

MariaDB [testdb]> select name,age,address from customer;
+------------+------+---------+
| name       | age  | address |
+------------+------+---------+
| suzuki-san |   40 | NULL    |
| kato-san   |   45 | NULL    |
+------------+------+---------+
2 rows in set (0.000 sec)

customerテーブルからaddressカラムを削除します。

MariaDB [testdb]> alter table customer drop column address;
Query OK, 0 rows affected (0.036 sec)
Records: 0  Duplicates: 0  Warnings: 0

customerテーブルのカラムを確認します。addressカラムが削除されたことがわかります。

MariaDB [testdb]> show columns from customer;
+-------+---------------------+------+-----+---------+-------+
| Field | Type                | Null | Key | Default | Extra |
+-------+---------------------+------+-----+---------+-------+
| name  | varchar(32)         | YES  |     | NULL    |       |
| age   | tinyint(3) unsigned | YES  |     | NULL    |       |
+-------+---------------------+------+-----+---------+-------+
2 rows in set (0.002 sec)

8 条件に一致するレコードを表示する方法

8.1 事前準備

testdbデータベース内にテーブルが存在しないことを確認します。

MariaDB [testdb]> show tables;
Empty set (0.000 sec)

testdbデータベース内にテスト用のcustomerテーブルを作成します。

MariaDB [testdb]> create table customer (name varchar(32), age tinyint unsigned, address varchar(32));

作成したcustomerテーブルにデータを登録します。

MariaDB [testdb]> insert into customer values("suzuki-san", 40, "tokyo");
MariaDB [testdb]> insert into customer values("kato-san", 30, "osaka");
MariaDB [testdb]> insert into customer values("tanaka-san", 20, "aichi");
MariaDB [testdb]> insert into customer values("ito-san", 10, "tokyo");

作成したテーブルを確認します。

MariaDB [testdb]> select * from customer;
+------------+------+---------+
| name       | age  | address |
+------------+------+---------+
| suzuki-san |   40 | tokyo   |
| kato-san   |   30 | osaka   |
| tanaka-san |   20 | aichi   |
| ito-san    |   10 | tokyo   |
+------------+------+---------+
4 rows in set (0.000 sec)

8.2 特定の条件に一致するレコードの取り出し方法(where)

customerテーブルから年齢が30歳のレコードを取り出します。年齢が30歳の人はkato-sanであることがわかります。

MariaDB [testdb]> select * from customer where age=30;
+----------+------+---------+
| name     | age  | address |
+----------+------+---------+
| kato-san |   30 | osaka   |
+----------+------+---------+
1 row in set (0.001 sec)

次は、年齢が30歳以上のレコードを取り出します

MariaDB [testdb]> select * from customer where age>=30;
+------------+------+---------+
| name       | age  | address |
+------------+------+---------+
| suzuki-san |   40 | tokyo   |
| kato-san   |   30 | osaka   |
+------------+------+---------+
2 rows in set (0.001 sec)

次は、住所がtokyoのレコードを取り出します。tokyoの人はsuzuki-sanとito-sanであることがわかります。

MariaDB [testdb]> select * from customer where address='tokyo';
+------------+------+---------+
| name       | age  | address |
+------------+------+---------+
| suzuki-san |   40 | tokyo   |
| ito-san    |   10 | tokyo   |
+------------+------+---------+
2 rows in set (0.001 sec)

最後に、住所がtokyoに一致しないレコードを取り出してみます。tokyo以外の人はkato-sanとtanaka-sanであることがわかります。

MariaDB [testdb]> select * from customer where not address='tokyo';
+------------+------+---------+
| name       | age  | address |
+------------+------+---------+
| kato-san   |   30 | osaka   |
| tanaka-san |   20 | aichi   |
+------------+------+---------+
2 rows in set (0.000 sec)

9 データベースを利用するユーザの登録、削除方法

セキュリティの観点から管理者権限でデータベースを利用するべきではありません。ここでは、データベースを利用するユーザの登録、削除を行います。

9.1 ユーザの登録方法

管理者権限でモニタにログインします。

[root@server ~]# mysql -u root -p
Enter password:
-snip-

localhostからのみデータベースに利用可能なユーザ(apache)を登録します。apacheのパスワードは11111に設定します。

MariaDB [(none)]> create user apache@localhost identified by '11111';
Query OK, 0 rows affected (0.009 sec)

登録されているユーザを確認します。apacheが登録されたことがわかります。

MariaDB [(none)]> select host,user from mysql.user;
+-----------+-------------+
| Host      | User        |
+-----------+-------------+
| localhost |             |
| localhost | apache      |
| localhost | mariadb.sys |
| localhost | mysql       |
| localhost | root        |
| server    |             |
+-----------+-------------+
6 rows in set (0.005 sec)

9.2 ユーザの削除方法

登録したユーザ(apache)を削除してみます。

MariaDB [(none)]> drop user apache@localhost;
Query OK, 0 rows affected (0.004 sec)

ユーザを確認してみます。apacheが削除されたことがわかります。

MariaDB	[(none)]>	select	host,user	from	mysql.user;
+-----------+-------------+
|	Host	|	User	|
+-----------+-------------+
|	localhost	|	|
|	localhost	|	mariadb.sys	|
|	localhost	|	mysql	|
|	localhost	|	root	|
|	server	|	|
+-----------+-------------+
5	rows	in	set	(0.001	sec)

10 ユーザ権限の設定、削除する方法

10.1 権限の種類

ユーザ権限には、次のようなものがあります。一部を抜粋

権限 内容
ALL 全ての権限を表す。管理者のみがもつことが望ましい
CREATE CREATEコマンドを発行する権限
ALTER ALTERコマンドを発行する権限
DELETE DELETEコマンドを発行する権限
INSERT INSERTコマンドを発行する権限
SELECT SELECTコマンドを発行する権限
UPDATE UPDATEコマンドを発行する権限

10.2 事前準備

管理者権限でモニタを起動します。

[root@server ~]# mysql -u root -p
Enter password:
-snip-

使用するデータベースをtestdbに切り替えます。

MariaDB [(none)]> use testdb;

2つのテーブル(customer1,customer2)を作成します。

MariaDB [testdb]> create table customer1 (name varchar(32), age tinyint unsigned);
MariaDB [testdb]> create table customer2 (name varchar(32), age tinyint unsigned);

作成したテーブルを確認します。

MariaDB [testdb]> show tables;
+------------------+
| Tables_in_testdb |
+------------------+
| customer1        |
| customer2        |
+------------------+
2 rows in set (0.000 sec)

localhost内からのみ接続可能なユーザ(apache)を作成します。ユーザのパスワードは11111を設定します。

MariaDB [testdb]> create user apache@localhost identified by '11111';
Query OK, 0 rows affected (0.004 sec)

10.3 権限を付与する方法(grant)

apacheユーザにselectコマンド実行の権限を付与します。

MariaDB [testdb]> grant select on customer1 to apache@localhost identified by '11111';
Query OK, 0 rows affected (0.006 sec)

apacheユーザに与えられている権限を確認します。

MariaDB [testdb]> show grants for apache@localhost;
+---------------------------------------------------------------------------------------------------------------+
| Grants for apache@localhost                                                                                   |
+---------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `apache`@`localhost` IDENTIFIED BY PASSWORD '*58D24DFDC5B5D55D6F6A25496AB51B74AA0FF7C9' |
| GRANT SELECT ON `testdb`.`customer1` TO `apache`@`localhost`                                                  |
+---------------------------------------------------------------------------------------------------------------+
2 rows in set (0.000 sec)

apacheユーザでモニタを起動します。パスワードは11111を入力します。

[root@server ~]# mysql -u apache -p
Enter password:
-snip-

使用するデータベースをtestdbに切り替えます。

MariaDB [(none)]> use testdb;

customer1テーブルにselectコマンドを実行すると、正常終了することがわかります。

MariaDB [testdb]> select * from customer1;
Empty set (0.000 sec)

customer2テーブルにselectコマンドを実行すると、異常終了することがわかります。

MariaDB [testdb]> select * from customer2;
ERROR 1142 (42000): SELECT command denied to user 'apache'@'localhost' for table 'customer2'

10.4 権限を削除する方法(revoke)

管理者権限でモニタを起動します。

[root@server ~]# mysql -u root -p
Enter password:
-snip-

使用するデータベースをtestdbに切り替えます。

MariaDB [(none)]> use testdb;

apacheユーザのSELECTコマンド使用の権限を削除します。

MariaDB [testdb]> revoke select on customer1 from apache@localhost;
Query OK, 0 rows affected (0.003 sec)
MariaDB [testdb]> show grants for apache@localhost;
+---------------------------------------------------------------------------------------------------------------+
| Grants for apache@localhost                                                                                   |
+---------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `apache`@`localhost` IDENTIFIED BY PASSWORD '*58D24DFDC5B5D55D6F6A25496AB51B74AA0FF7C9' |
+---------------------------------------------------------------------------------------------------------------+
1 row in set (0.000 sec)

11 AUTO_INCREMENTの使い方

AUTO_INCREMENTとは,それを指定したカラムに対してMySQLが自動的に一意のシーケンス番号を生成する機能です。

まず、shopというテーブルを作成します。

MariaDB [testdb]> create table shop(id int unsigned auto_increment not null, pref varchar(32), name varchar(32), address varchar(256), primary key(id));
Query OK, 0 rows affected (0.036 sec)

作成したテーブルを確認します。

MariaDB [testdb]> show columns from shop;
+---------+------------------+------+-----+---------+----------------+
| Field   | Type             | Null | Key | Default | Extra          |
+---------+------------------+------+-----+---------+----------------+
| id      | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| pref    | varchar(32)      | YES  |     | NULL    |                |
| name    | varchar(32)      | YES  |     | NULL    |                |
| address | varchar(256)     | YES  |     | NULL    |                |
+---------+------------------+------+-----+---------+----------------+
4 rows in set (0.002 sec)

作成したテーブルにデータを設定します。このとき、auto_incrementを設定するカラムには、nullを設定します。

MariaDB [testdb]> insert into shop values(null,"東京","洋包丁","東京都新宿区高田馬場3丁目1");
MariaDB [testdb]> insert into shop values(null,"東京","リンガーハット","東京都町田市木曽東3-8-24");
MariaDB [testdb]> insert into shop values(null,"神奈川","たまい本店","神奈川県川崎市高津区溝口1丁目
MariaDB [testdb]> insert into shop values(null,"香川","郷家","香川県高松市瓦町2丁目10-12");

登録したデータを確認します。idの部分に1,2,3,4が設定されていることがわかります。

MariaDB [testdb]> select * from shop;
+----+-----------+-----------------------+--------------------------------------------------+
| id | pref      | name                  | address                                          |
+----+-----------+-----------------------+--------------------------------------------------+
|  1 | 東京      | 洋包丁                | 東京都新宿区高田馬場3丁目1                       |
|  2 | 東京      | リンガーハット        | 東京都町田市木曽東3-8-24                         |
|  3 | 神奈川    | たまい本店            | 神奈川県川崎市高津区溝口1丁目11-22               |
|  4 | 香川      | 郷家                  | 香川県高松市瓦町2丁目10-12                       |
+----+-----------+-----------------------+--------------------------------------------------+
4 rows in set (0.000 sec)

Z 参考情報

私が業務や記事執筆で参考にした書籍を以下のページに記載します。
Linux技術のスキルアップをしよう! - hana_shinのLinux技術ブログ