プロになるためのPHPプログラミング入門 サンプル環境構築
以下書籍に付属するサンプルの実行環境を構築する。
「プロになるためのPHPプログラミング入門」(ISBN 978-4-7741-4972-1)
環境は以下記事のものを使用
「PHP:プロになるためのPHPプログラミング入門 サンプル環境構築」
サーバのバージョン: 8.0.46 - MySQL Community Server - GPL
「プロになるためのPHPプログラミング入門」(ISBN 978-4-7741-4972-1)
環境は以下記事のものを使用
「PHP:プロになるためのPHPプログラミング入門 サンプル環境構築」
サーバのバージョン: 8.0.46 - MySQL Community Server - GPL
A.3 MySQLの設定 / A.3.1 データベースと接続ユーザーの作成 (P.320)
1. MySQLコンテナへの接続
2. MySQLログイン
3. ppdbデータベースの作成
4. 管理者ユーザの追加
5. 一般ユーザの追加
続く・・
MySQLコンテナに接続する。
実行結果:
実行結果:
xxxxxxxx@yyyy:~/docker/php$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3d8258bc2177 php:8.3-apache "docker-php-entrypoi…" 7 days ago Up 5 days 0.0.0.0:8080->80/tcp, [::]:8080->80/tcp php-php-1
d094e1650051 mysql:8.0 "docker-entrypoint.s…" 7 days ago Up 5 days 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp, 33060/tcp php-db-1
b60aebf325a6 phpmyadmin/phpmyadmin "/docker-entrypoint.…" 7 days ago Up 5 days 0.0.0.0:8081->80/tcp, [::]:8081->80/tcp php-phpmyadmin-1
xxxxxxxx@yyyy:~/docker/php$ docker exec -it d094e1650051 /bin/bash
bash-5.1#
2. MySQLログイン
MySQLにrootユーザで接続する。
実行結果:
mysql -u root -p
実行結果:
bash-5.1# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 382
Server version: 8.0.46 MySQL Community Server - GPL
Copyright (c) 2000, 2026, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
3. ppdbデータベースの作成
以下コマンドを実行
create database ppdb CHARACTER set utf8mb4;
実行結果:mysql> create database ppdb CHARACTER set utf8mb4;
Query OK, 1 row affected (0.03 sec)
4. 管理者ユーザの追加
以下コマンドを実行 → エラー発生
対応:
grant all on ppdb.* to 'ppadmin'@'localhost' identified by 'パスワード';
実行結果:mysql> grant all on ppdb.* to 'ppadmin'@'localhost' identified by 'xxxx';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by 'xxxx'' at line 1
原因:MySQL 8.0以降では、GRANT コマンドと同時に IDENTIFIED BY を使ってユーザーの作成やパスワードの変更を行うことができなくなった。
対応:
4-1. ユーザーを先に作成する
4-2. 権限を付与する
4-3. 設定を反映する
まず、CREATE USER コマンドでユーザーとパスワードを設定する。
CREATE USER 'ppadmin'@'localhost' IDENTIFIED BY 'パスワード';
実行結果:mysql> CREATE USER 'ppadmin'@'localhost' IDENTIFIED BY 'xxxx';
Query OK, 0 rows affected (0.02 sec)
4-2. 権限を付与する
次に、GRANT コマンドで権限を設定する。
GRANT ALL PRIVILEGES ON ppdb.* TO 'ppadmin'@'localhost';
実行結果:mysql> CREATE USER 'ppadmin'@'localhost' IDENTIFIED BY 'xxxx';
Query OK, 0 rows affected (0.02 sec)
4-3. 設定を反映する
念のため、変更を確実に反映させるために以下のコマンドを実行しておく。
FLUSH PRIVILEGES;
実行結果:mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)
5. 一般ユーザの追加
一般ユーザーもユーザ作成と権限付与を分けて実行する。
CREATE USER 'ppguest'@'localhost' identified by 'パスワード';
実行結果:mysql> CREATE USER 'ppguest'@'localhost' identified by 'xxxx';
Query OK, 0 rows affected (0.01 sec)
GRANT SELECT ON ppdb.* to 'ppguest'@'localhost';
実行結果:mysql> GRANT SELECT ON ppdb.* to 'ppguest'@'localhost';
Query OK, 0 rows affected, 1 warning (0.00 sec)
FLUSH PRIVILEGES;
実行結果:mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)
続く・・
0 件のコメント:
コメントを投稿