記事の内容
Linux版XAMPPにてPHPMyAdminではなく端末からDB作成、DBのユーザー作成、A5:SQL Mk-2で参照するまでの手順
今回使用したXamppのバージョン
xampp-linux-x64-8.1.10-0-installer.run
本文
1. MySQL起動
XAMPPの管理コンソールからMySQLを起動させる。
以下のようにRunningになっていればOK
2. 端末からMySQLにログイン
MySQL(実体はMariaDBだが以降はMySQLと呼ぶ)の実行ファイルは以下添付画像の通り/opt/lampp/bin/mysql
に配置されているため
以下のコマンドでMySQLにログインすることが出来る。
/opt/lampp/bin/mysql -u root -p
# もし駄目なら管理者権限で実行でもOK
sudo /opt/lampp/bin/mysql -u root -p
# 更にちゃんとHOST指定したい場合は以下
sudo /opt/lampp/bin/mysql -u root -p -h localhost
Enter後
パスワード入力町状態になるが初期状態ではrootのパスワードは空なのでそのままエンターでOK
3. DB作成
CREATE DATABASE データベース名 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
DB作成時のオプションについての補足
CHARACTER SET(キャラクタセット)
・utf8: 3バイトまでのUnicode文字をサポート(MySQLではよく使われる)
・utf8mb4: 4バイトのUnicode文字もサポート(絵文字など)
・latin1: 西欧言語向けの文字セット
COLLATE(照合順序)
・大文字と小文字を区別しない場合: COLLATE utf8mb4_general_ci
・大文字と小文字を区別する場合: COLLATE utf8mb4_bin
CREATE TABLE users (
username VARCHAR(255)
)
INSERT INTO users (username) VALUES ('Alice'), ('alice');
SELECT * FROM users WHERE username = 'Alice'; -- 結果: binなら'Alice' のみが返り、general_ciなら両方返ってくる
SELECT * FROM users WHERE username = 'alice'; -- 結果: binなら'alice' のみが返る、general_ciなら両方返ってくる
(個人的にはbinの方が厳密で良い気がするけどgeneral_ciの方がよく見かける理由は何故だろうか?)
4-1. 作成したDB専用ユーザーの作成(ユーザー作成のみ)
# 基本構文
CREATE USER 'username'@'hostname' IDENTIFIED BY 'example_password';
# ローカルホストから接続するユーザーの作成
CREATE USER 'example_user'@'localhost' IDENTIFIED BY 'example_password';
# どのホストからも接続できるユーザーの作成
CREATE USER 'example_user'@'%' IDENTIFIED BY 'example_password';
# ホストを特定のIPアドレスに制限する
CREATE USER 'example_user'@'192.168.1.100' IDENTIFIED BY 'example_password';
4-2. 作成したDB専用ユーザーの作成(権限付与)
# 基本構文
GRANT 権限リスト ON データベース名.テーブル名 TO 'ユーザー名'@'ホスト名';
# 特定のテーブルにSELECT権限のみ付与する場合
GRANT SELECT ON my_database.my_table TO 'example_user'@'localhost';
# 複数の権限を特定のテーブルに付与する場合
GRANT SELECT, INSERT, UPDATE ON my_database.my_table TO 'example_user'@'localhost';
# データベース内のすべてのテーブルに対し、SELECT, INSERT権限を付与する場合
GRANT SELECT, INSERT ON my_database.* TO 'example_user'@'localhost';
# データベース内の全てのテーブルに全ての権限を付与する場合
# すべての操作とはSELECT、INSERT、UPDATE、DELETE、CREATE、DROP、ALTER など
GRANT ALL PRIVILEGES ON my_database.* TO 'example_user'@'localhost';
# 付与後に権限を反映する
FLUSH PRIVILEGES;
5. ログアウトして作成したユーザーでログイン可能なことを確認
# MySQLにrootでログイン中の場合は以下
exit
# 作成したユーザーのユーザー名でログイン
/opt/lampp/bin/mysql -u user_name -p
# ログイン中のユーザー確認
SELECT USER();
# 作成したDBが見れるかどうかの確認
show databases;
6. A5:SQL Mk-2でDBの追加
LinuxOSの場合は通常A5:SQL MK-2は使用できませんが、作者の方が書いてくださっている以下記事の通り、wineを使用することで制限はあるそうですがLinuxでも使用することが出来ます。
wine を使って Linux 上で A5:SQL Mk-2 を動作させる
※本記事では既にwine導入済みの前提
DB接続情報
- データベース名:connect_test
- ユーザー名:connect_test_user
- パスワード:connect_test_password
以下ログ
$ /opt/lampp/bin/mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 28
Server version: 10.4.25-MariaDB Source distribution
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> CREATE DATABASE connect_test CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
Query OK, 1 row affected (0.001 sec)
MariaDB [(none)]> CREATE USER 'connect_test_user'@'localhost' IDENTIFIED BY 'connect_test_password';
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON connect_test.* TO 'connect_test_user'@'localhost';
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.001 sec)
上記の情報でDBとユーザーを作成した場合の接続方法をキャプチャで添付しておきます。
左の白い領域で右クリック > Add or Delete Database ...をクリック
MySQL/MariaDB (Direct connection)をクリック
接続情報入力用のモーダルが表示されるので「DB接続情報」に入力欄の情報を書き換えたらOKだが一応、初期表示時と変更後の状態をキャプチャで添付する。
Connection Testをクリックして問題なければOKをクリック