その12.mySQLをインストールする
Debian9 + PHP8 + mySQL (MariaDB) です。
自分のデータベースを用意してSQLクエリの練習ができるようにしたいと思います。
リレーショナルデータベース管理システム(RDBMS)であるmySQLを使っていきます。
毎日自動でサーバが落ちるので、サーバの起動時にmySQLも自動起動するように設定します。
環境情報
Debian GNU/Linux 9 (stretch)
Apache/2.4.25 (Debian)
PHP 8.0.1
mySQL 15.1(MariaDB 10.1.48 )
mySQLをインストールする
$ sudo apt install mysql-server mysql-client
mysql-server と mysql-client を一緒にインストールしました。
バージョンを確認します。
$ mysql --version
mysql Ver 15.1 Distrib 10.1.48-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
Ver 15.1 がインストールされました。
MariaDB 10.1.48 がディストリビュートされたみたいです。
サービスを起動を確認
$ sudo service mysql status
● mariadb.service - MariaDB 10.1.48 database server
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2021-02-24 17:42:15 JST; 5min ago
Docs: man:mysqld(8)
https://mariadb.com/kb/en/library/systemd/
Main PID: 3721 (mysqld)
Status: "Taking your SQL requests now..."
Tasks: 26 (limit: 4915)
CGroup: /system.slice/mariadb.service
└─3721 /usr/sbin/mysqld
Feb 24 17:42:15 my-server systemd[1]: Starting MariaDB 10.1.48 database server...
Feb 24 17:42:15 my-server mysqld[3721]: 2021-02-24 17:42:15 14032932393715 [Note] /usr/sbin/mysqld (mysqld 10.1.48-MariaDB-0+deb9u1) starting as process 3721 ...
Feb 24 17:42:15 my-server systemd[1]: Started MariaDB 10.1.48 database server.
root のパスワードを設定する
公式ページがとても参考になります。(日本語解説あり)
$ sudo mysql_secure_installation
最初のroot パスワードを聞かれるときはまだ設定されていないので 空でエンターします。
そのあと、新しいrootパスワードに設定する値を入力します。
後の問いは全て Y を入力しました。
mySQLにログイン
$ mysql -u root
MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)
ログインしてデータベースを表示してみました。
とくに問題なさそうです。
ユーザーを追加
次のユーザーを追加してみます。
ユーザー名:amaru
MariaDB [(none)]> CREATE USER 'amaru'@'localhost' IDENTIFIED BY 'パスワードです';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> select user,host from mysql.user;
+-------+-----------+
| user | host |
+-------+-----------+
| amaru | localhost |
| root | localhost |
+-------+-----------+
2 rows in set (0.00 sec)
amaru が追加されてます。
権限を付与する
現在の amaru の権限を確認します。
MariaDB [(none)]> SHOW GRANTS FOR 'amaru'@'localhost';
+--------------------------------------------------------------------------------------------------------------+
| Grants for amaru@localhost |
+--------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'amaru'@'localhost' IDENTIFIED BY PASSWORD 'パスワード' |
+--------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
USAGE ON *.* は 全てのDB、Table に何の権限もない という設定になります。
amaru に 全権限を付与します。
MariaDB [(none)]> GRANT all ON *.* TO 'amaru'@'localhost';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> SHOW GRANTS FOR 'amaru'@'localhost';
+-----------------------------------------------------------------------------------------------------------------------+
| Grants for amaru@localhost |
+-----------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'amaru'@'localhost' IDENTIFIED BY PASSWORD 'パスワード' |
+-----------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
ALL PRIVILEGES ON は、全ての権限が与えられた状態です。
サーバの起動でmySQLを自動起動させる
まずは自動起動の設定を確認します。
$ sudo systemctl is-enabled mariadb
enabled
既に自動起動の設定が有効(enabled)になっていました。
もし、無効(disabled)の場合は下記コマンドを実行して有効にします。
$ sudo systemctl enable mariadb.service
サーバを再起動させてみましたが、自動起動されました。^^
PHPからmySQLにアクセスする
WebサーバのドキュメントルートにPHPファイルを配置します。
場所: /var/www/html/
ファイル: mysql_test.php
<?php $link = mysqli_connect('localhost', 'amaru', 'パスワード', 'mysql'); // 接続状況をチェックします if (mysqli_connect_errno()) { die("データベースに接続できません:" . mysqli_connect_error() . "\n"); } else { echo "データベースの接続に成功しました。\n"; // userテーブルの情報を表示(一部) $query = "SELECT user, host FROM user;"; // クエリを実行します。 if ($result = mysqli_query($link, $query)) { /* 連想配列を取得します */ while ($row = mysqli_fetch_assoc($result)) { echo "</br>"; printf("%s | %s\n", $row["user"], $row["host"]); } /* 結果セットを開放します */ mysqli_free_result($result); } echo "</br>"; // 接続を閉じます mysqli_close($link); }
出力結果:
あとは、データベースに色々なデータをいれてSQLクエリを色々試してみたいと思います。
インストールから設定まで思っていたよりもサクサク終わって良かったです。^^
0 件のコメント:
コメントを投稿