戻る

ArchでMySQLの環境構築

Nov 13, 2020

MySQLの実装としてArchではMariaDBがデフォルトで採用されている. MySQLはCentOS向けの情報ばかりでArch向けの情報があまりないと感じたので今回ここでまとめる.

まずはインストールする. mysqlをインストールしようとすると, 自動的にmariadbをデフォルトでインストールしようとしてくれる. そのつぎにmariadb-install-dbコマンドで初期設定をする. このコマンドを実行することでシステムにmysqlというユーザーが追加される.


sudo pacman -S mysql
sudo mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql

デーモンを起動する.


sudo systemctl enable mysql
sudo systemctl start mysql

startで失敗する場合は, 次のコマンドを実行してstartし直すとうまくいくはず.


sudo systemctl daemon-reexec

mysqlのデータユーザーを作成し, mydbというデータベースに対する全ての権限を与える. 初期状態ではパスワードは何も設定されていない. ユーザーを作成する(CREATE USER文) が参考になる. -uはユーザーを指定, -pはパスワード認証でログインするという意味. パスワードを設定していない場合を除いて, -pは必ずつける.


sudo mysql -u root -p
MariaDB> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass';
MariaDB> GRANT ALL PRIVILEGES ON mydb.* TO 'monty'@'localhost';
MariaDB> FLUSH PRIVILEGES;
MariaDB> quit

MariaDBの設定ファイルは /etc/my.cnf /etc/my.cnf.d/ ~/.my.cnfにある. ただ, ~/.my.cnfは大抵ホームディレクトリのないmysqlというユーザーで実行するためあまり使わないと思う.

ループバックのみListenするようにする. (デフォルトでは全てlistenしている) /etc/my.cnf.d/server.cnfを次のように変える.


[mysqld]
bind-address = 127.0.0.1

SQLでの操作

SQLを始めるにはいきなりデータベースの操作をする前にユーザー作成, 権限の設定など様々な操作を慣れ親しむ必要がある. SQLも一つの環境なので当然のことだが.

SQLではデータベースのデータだけではなく, データベース自体の情報をクエリすることができる. 基本的に特別な権限を与えない限りはrootユーザーのみでしかクエリする権限がないことに注意しよう.

ユーザーの操作

ユーザーの一覧を取得


SELECT user, host FROM mysql.user;

ユーザー生成の情報を取得


MariaDB> SHOW CREATE USER monty@localhost;

ユーザーの権限の情報を取得


MariaDB> SHOW GRANTS FOR monty@localhost;


ユーザーのパスワード変更


MariaDB> ALTER USER monty@localhost IDENTIFIED BY 'another_pass';

ユーザー名を変更する


MariaDB> RENAME monty@localhost TO mona@localhost;

ユーザーを削除する


MariaDB> DROP USER monty@localhost;

ユーザーに権限を設定する ユーザーに権限を設定する(GRANT文) が参考になる. MariaDB> GRANT ALL PRIVILEGES ON somedb.* TO monty@localhost

権限を削除するには, GRANTをREVOKE, TOをFROMに変えれば良い.

データベースの操作

データベースを作成する


MariaDB> CREATE DATABASE mydb;

データベース一覧取得


MariaDB> SHOW DATABASES;

データベース作成時の情報取得


MariaDB> SHOW CREATE DATABASE mydb;

どのデータベースを操作するのかをUSEで指定する.


MariaDB> USE mydb;

テーブルを作成


MariaDB> CREATE TABLE test;

現在使用中のデータベースを確認


MariaDB> SELECT database();

使用するデータベースの指定は次でもできる


mysql -u root -p mydb

テーブルの操作

データベースにテーブルを作成する


MariaDB> CREATE TABLE mydb.tbl;

USEで使用しているデータベースにテーブルを作成する


MariaDB> CREATE TABLE tbl;

テーブルの一覧を取得


MariaDB> SHOW TABLES FROM mydb;

テーブルのデフォルトストレージエンジンを指定してテーブルを作成する


MariaDB> CREATE TABLE SALES (shiten int, sales int) ENGINE MyISAM;

テーブルを削除する


MariaDB> DROP TABLE tbl

テーブルにデータを追加する. 文字列は必ず''で囲む必要がなく, アルファベット数字だけで空白なしというような単純な場合はなくてもOK. まとめて入れることも可能


MariaDB> CREATE TABLE usr (id int, name varchar(10), age int)
MariaDB> INSERT INTO usr (1, 'Hanada', 39)
MariaDB> INSERT INTO usr (2, Ishimi, 35), (3, Huruta, 29)


MariaDB> UPDATE usr SET id=id-1 WHERE id >= 100

Columnの一覧取得.


MariaDB> SHOW COLUMNS FROM usr;

テーブルの構造を変える

テーブル名を変更する.


MariaDB> ALTER TABLE tbl RENAME TO tbl2

Columnを追加する.


MariaDB> ALTER TABLE usr ADD mail varchar(20);

Columnを削除する.


MariaDB> ALTER TABLE usr DROP mail;

Column名を変更する.


MariaDB> ALTER TABLE tbl RENAME mail TO email;

Columnの型を変更する.


MariaDB> ALTER TABLE tbl MODIFY mail varchar(20)