【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クエリを色々試してみたいと思います。

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


ラベル

3DCG AdSense AI Amazon Echo Blender Blogger cron Cursor DNS Fire TV GCP Github Copilot Google Cloud HTTP iOS IPA iPad iPhone5 JavaScript laravel mySQL nodejs PhotoShop PHP Python Redis Scratch SSH Unity vue.js Webサーバ Windows10 WinSCP イヤーカフ型 イラスト おかし おやつ オリンピック お文具 カイワレ大根 ガチャ きのこ ギフト キャラ弁 クリスマス クレジットカード ゲーミング ゲーミングキーボード ゲーミングマウス ゲーミングマウスパッド ゲーミングモニター ゲームパッド ゴーヤー栽培 コナン サーバ サイクリング サイバーセキュリティ サイバー攻撃 サブスクリプション しりとり すイエんサー スクラッチ スマートウォッチ スライム セキュリティ ゼロトラスト ダイエット タブレット ドズル社 なわとび バーテープ パズル パンダ ぷよぷよ ふるさと納税 プログラミング プロトコル番号 マイクラ マイクロソフト マリオ マンガ メモ ランニングウォッチ ランニングゲーム ワイヤレスイヤホン 異世界 絵本 株関連 鬼滅の刃 健康診断 工作 磁石 自転車 自動化 収益化 書き初め 小学校 松屋 情報処理 情報処理安全確保支援士 辛辛魚 水泳 生成AI 折り紙 川渡し問題 銭天堂 誕生日 段ボール 知育菓子 中学受験 冬鳥 動画 動画編集 日常 認定試験 粘土 福袋 便利な雑貨 母の日 銘酒 料理

このブログを検索

ブログをよくする

連絡フォーム

名前

メール *

メッセージ *

ブログ アーカイブ

QooQ