【GCP】mySQLをインストールしてPHPでデータベースを操作する

2021年2月24日水曜日

GCP mySQL PHP

t f B! P L

 


その12.mySQLをインストールする







Debian9 + PHP8 + mySQL (MariaDB) です。



自分のデータベースを用意してSQLクエリの練習ができるようにしたいと思います。

リレーショナルデータベース管理システム(RDBMS)であるmySQLを使っていきます。



毎日自動でサーバが落ちるので、サーバの起動時にmySQLも自動起動するように設定します。




今までのGCP関連記事はこちら↓



環境情報


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-servermysql-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);

}



出力結果:




データベースに対してSELECT文のクエリ実行に成功しました!





あとは、データベースに色々なデータをいれてSQLクエリを色々試してみたいと思います。

インストールから設定まで思っていたよりもサクサク終わって良かったです。^^


このブログを検索

ブログをよくする

自己紹介

自分の写真
はじめまして。あまるちゃんです。 子供のプログラミング学習に協力できるように教え方を勉強中です。 このブログでは自分が学んだことを投稿していきます。

連絡フォーム

名前

メール *

メッセージ *

ブログ アーカイブ

QooQ