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

PHP

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

2018年5月7日

こんにちは!

 

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

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

 

環境

 

 

作業手順

 

 

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

[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

 

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

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

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('password');
Query OK, 0 rows affected (0.00 sec)

 

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

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)

 

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

mysql> use test;
Database changed

 

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

mysql> show tables;
Empty set (0.00 sec)

 

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

mysql> create table test_table(col1 int(10));
Query OK, 0 rows affected (0.01 sec)

 

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

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| test_table |
+----------------+
1 row in set (0.00 sec)

 

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

mysql> desc test_table;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| col1 | int(10) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)

 

 

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

mysql> insert into test_table value('100');
Query OK, 1 row affected (0.00 sec)
> commit;

 

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

mysql> select * from test_table;
+------+
| col1 |
+------+
| 100 |
+------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)

 

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

[root@localhost ~]# find / -name mysql.sock -print
/var/lib/mysql/mysql.sock

 

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

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

[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

 

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

[root@localhost ~]# systemctl restart httpd.service

 

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

[root@localhost ~]# systemctl restart mysql.service

 

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

[root@localhost ~]# vi /var/www/html/mysqltest.php


<?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';
    }
?>

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

 

 

いかがでしょうか。

 

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

 

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

  • この記事を書いた人

そーまん

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

人気記事

1

こんにちは!SE ブログの相馬です。       今回は、PC に適用されている GPO を確認する方法について書きました。     グループポリシー ...

2

こんにちは!SE ブログの相馬です。       今回は sysprep について、全体的に PC をセットアップする観点から書いてみました。長々と書いてあります。まずは ...

3

こんにちは!SE ブログの相馬です。       今回は、グループポリシーを使って、特定のコンピューターに対して、ドメインユーザーに Administrators 権限を ...

4

こんにちは!SE ブログの相馬です。       今回は、Windows サインイン後に一時ユーザープロファイルが読み込まれてしまった場合の解決方法について書きました。 ...

5

こんにちは!SEブログの相馬です。       今回は、ユーザープロファイルを削除する方法について書いてみました。     1 台の PC を複数人で ...

6

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

7

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

8

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

9

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

10

こんにちは!SE ブログの相馬です。       今回は、Windows Server 2016 で NTP サーバーと同期する方法について書きました。   & ...

-PHP
-, ,