【PHP】PHPからMySQLへ接続する

PHP

【PHP】PHPからMySQLへ接続する

2018年5月7日

こんにちは!

 

今回は、PHP から MySQL への接続について以下の環境で試してみました。

これで最小構成(設定)ではありますが、LAMP の環境は作れるかと思います。

 

環境

 

 

作業手順

 

 

1. MySQL にログインします。

[code language="shell"]
[root@localhost ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 375
Server version: 5.6.26
[/code]

 

2. MySQL のパスワードを初期値から変更していない場合はここで変更します。

ユーザーの記述が 'ユーザー名'@’ホスト名或いは IP ’ であるところに注意します。パスワードもシングルクォーテーションで括ります。

[code language="SQL"]
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('password');
Query OK, 0 rows affected (0.00 sec)
[/code]

 

3. データベースを一覧表示します

[code language="SQL"]
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
[/code]

 

4. test データベースへ接続します

[code language="SQL"]
mysql> use test;
Database changed
[/code]

 

5. test データベースのテーブルを表示します。テーブルは空です。

[code language="SQL"]
mysql> show tables;
Empty set (0.00 sec)
[/code]

 

6. test データベースにテーブルを作成します

[code language="SQL"]
mysql> create table test_table(col1 int(10));
Query OK, 0 rows affected (0.01 sec)
[/code]

 

7. テーブルが作成されたか確認します

[code language="SQL"]
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| test_table |
+----------------+
1 row in set (0.00 sec)
[/code]

 

8. テーブルの定義を確認します。

[code language="SQL"]
mysql> desc test_table;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| col1 | int(10) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)
[/code]

 

 

9. テーブルに 1 行入れてみます。

[code language="SQL"]
mysql> insert into test_table value('100');
Query OK, 1 row affected (0.00 sec)
> commit;
[/code]

 

10. 1行入っていることを確認します。

[code language="SQL"]
mysql> select * from test_table;
+------+
| col1 |
+------+
| 100 |
+------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
[/code]

 

11. これでデータベース側の準備はできました。PHP から MySQL に接続するためには mysql socket が必要になりますのでファイルの有無を確認します。

[code language="shell"]
[root@localhost ~]# find / -name mysql.sock -print
/var/lib/mysql/mysql.sock
[/code]

 

12. PHP から MySQL に接続できるよう、php.ini のファイルに mysql socket の場所を以下のように追記します。

以下は mysqli の場合になります。

[code language="shell"]
[root@localhost ~]# vi /etc/php.ini

; Default socket name for local MySQL connects. If empty, uses the built-in
; MySQL defaults.
; http://php.net/mysqli.default-socket
mysqli.default_socket = /var/lib/mysql/mysql.sock
[/code]

 

13. Apacheのサービスを再起動します。

[code language="shell"]
[root@localhost ~]# systemctl restart httpd.service
[/code]

 

14. MySQLのサービスを再起動します。

[code language="shell"]
[root@localhost ~]# systemctl restart mysql.service
[/code]

 

15. 接続用の phpファイルを作成します。

[code language="shell"]
[root@localhost ~]# vi /var/www/html/mysqltest.php

[code language="shell"]
<?php
$hostname = "localhost";
$username = "root";
$password = "password";
$dbname = "test";

$link = mysqli_connect($hostname, $username, $password, $dbname);

if ($link) {
$query = "select * from test_table";
$result = mysqli_query($link, $query);

while($row = mysqli_fetch_array($result)){
echo $row['col1'];
}

mysqli_free_result($result);
mysqli_close($link);

} else {
echo 'DB connect failure';
}
?>
[/code]

15. 作成したphp にアクセスし、100 が表示されればOKです。

 

 

いかがでしょうか。

 

PHP から MySQL への接続に失敗している場合は大体 mysql socket ファイルが無いか、php.ini ファイルに mysql socket ファイルが格納されている場所(パス)が書かれていないか、どちらも問題がなければ、Apache または MySQL サービスが再起動されていないかかなと思っております。

 

では最後までお読みいただきありがとうございました!

  • この記事を書いた人

そーまん

セキュリティエンジニアやってます。
ブログ歴3年。PVは月15万PV程度。
趣味はボクシング、筋トレ、登山です。
穏やかで人見知りな性格です。

人気記事

1

こんにちは!そーまんです。 今回は、PC に適用されている GPO を確認する方法について書きました。 本題に入る前に、一応参考までにGPOの適用タイミングについての記事をここに貼りましたので、必要に ...

2

こんにちは!そーまんです。 今回は sysprep について、全体的に PC をセットアップする観点から書いてみました。長々と書いてあります。まずは前置きからです。 まずはじめに 組織では PC のラ ...

3

こんにちは!そーまんです。 今回は、グループポリシー (GPO) を使って、特定のコンピューターに対して、ドメインユーザーに ローカル管理者権限 (以下は特権と記載) を付与する方法について書きました ...

4

こんにちは!そーまんです。 今回は、Windows サインイン後に一時ユーザープロファイルが読み込まれてしまった場合の解決方法について書きました。 Windows 10 の検証環境をいじってたらサイン ...

5

こんにちは!そーまんです。 今回は、ユーザープロファイルを削除する方法について書いてみました。 企業の場合よくあることですが、1 台の PC を共有 PC として複数人で使ったり、また余り無いかもしれ ...

6

こんにちは!SE ブログの相馬です。       今回は、繰り返し文について書いてみました。PowerShell では他のプログラミング言語同様、繰り返し処理を行うことが ...

7

コマンドを使って CPU とメモリの使用率をデータで取得してみましたので、例えば PC のトラブルシューティングで問題を再現させる際にデータを取得しておくと、原因の特定に役立つ場合があるかと思います。

8

既存の PC と同じ構成で別のメーカーの PC でマスターイメージを作る際、インストールされているアプリを同一にする為に必要になるかと思います。

9

企業で多くの GPO が適用されている環境では、PC に GPO が適用されなかったりする問題が発生する場合があるかと思います。その中でも、コンピューターの構成またはユーザーの構成のどちらかで、...

10

こんにちは!そーまんです。 今回は、Windows Server 2019 で NTP サーバーと同期する方法について書きました。 NTP サーバーの必要性や時刻同期の重要性を理解することは社内のシス ...

-PHP
-, ,