teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

6

しゅうせい

2016/04/07 07:45

投稿

Akirax
Akirax

スコア20

answer CHANGED
@@ -7,10 +7,13 @@
7
7
 
8
8
  ユーザー権限の付与がされてない場合は、
9
9
  PHPからPDO構文でSQLへの接続を行うと↓こんな感じのエラーで接続を拒絶されると思います。
10
- (try/catch構文だと、catch側の命令が実行されると思います。)
10
+
11
11
  ![イメージ説明](e0309bbe2b24960abf65e5d2e44ff721.png)
12
12
 
13
+ (*try/catch構文を使っている場合だと、catch側の命令が実行されると思います。)
13
14
 
15
+
16
+
14
17
  そういった方は、
15
18
  ①ターミナルで下のコマンドを実行して、今自分のMySQLに設定されているユーザー名とホスト名を確認できます。
16
19
  ![イメージ説明](24d12696b5ee184f729779bbe4690c59.png)

5

修正

2016/04/07 07:45

投稿

Akirax
Akirax

スコア20

answer CHANGED
@@ -3,32 +3,37 @@
3
3
  備忘録として、こちらにまとめます。(MacでMampユーザーの場合に限定されるかもしれませんが、、、)
4
4
 
5
5
  PDO構文を使ってPHPからSQLへデータを遷移させたい場合、
6
- 全てのユーザー権限を特定のユーザー付与する必要があるようです。
6
+ SQLで利用する特定のユーザー名対して全てのユーザー権限を付与する必要があるようです。
7
7
 
8
- ターミナルでユーザー権限の付与をしてない場合は、
8
+ ユーザー権限の付与がされてない場合は、
9
- PDO構文で接続を行うと↓こんな感じのエラーで接続を拒絶されると思います。
9
+ PHPからPDO構文でSQLへの接続を行うと↓こんな感じのエラーで接続を拒絶されると思います。
10
10
  (try/catch構文だと、catch側の命令が実行されると思います。)
11
11
  ![イメージ説明](e0309bbe2b24960abf65e5d2e44ff721.png)
12
12
 
13
+
13
14
  そういった方は、
14
15
  ①ターミナルで下のコマンドを実行して、今自分のMySQLに設定されているユーザー名とホスト名を確認できます。
15
16
  ![イメージ説明](24d12696b5ee184f729779bbe4690c59.png)
16
17
 
17
18
 
19
+
18
20
  ②続いて、不要なユーザー名とホスト名は下のコマンドで削除します。
19
21
  mysql> DROP USER 'root'@'%';
20
22
 
21
23
 
24
+
22
25
  ③さらに、これから利用するユーザー名(今回は:root) とホスト名(今回は:localhost) を下のコマンドで作成し、
23
26
   2行目のコマンドでパスワードを設定してあげます。(パスワード不要なら''で構わない。)
24
27
  mysql> CREATE USER 'root'@'localhost';
25
28
  mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('***');
26
29
 
27
30
 
31
+
28
32
  ④最後に、このユーザー名とホスト名に以下のコマンドで権限を与えます。
29
33
  mysql> grant all on *.* to 'root'@'localhost';
30
34
 
31
35
 
36
+
32
37
  これで、PHPからSQLへの接続が許可されます。
33
38
 
34
39
  また、PHPからSQLへの接続に必要なコードは以下の通りです。

4

修正

2016/04/07 07:43

投稿

Akirax
Akirax

スコア20

answer CHANGED
@@ -5,22 +5,30 @@
5
5
  PDO構文を使ってPHPからSQLへデータを遷移させたい場合、
6
6
  全てのユーザー権限を特定のユーザーに付与する必要があるようです。
7
7
 
8
+ ターミナルでユーザー権限の付与をしてない場合は、
8
- ターミナルユーザー権限の付与してない場合は、↓こんな感じのエラーで接続を拒絶されてしまいます。
9
+ PDO構文接続行うと↓こんな感じのエラーで接続を拒絶されると思います。
10
+ (try/catch構文だと、catch側の命令が実行されると思います。)
9
11
  ![イメージ説明](e0309bbe2b24960abf65e5d2e44ff721.png)
10
12
 
11
- まず、そういった方は、
13
+ そういった方は、
12
- ①ターミナルで下のコマンドを実行すると、今自分のMySQLに設定されているユーザー名とホスト名を確認できます。
14
+ ①ターミナルで下のコマンドを実行して、今自分のMySQLに設定されているユーザー名とホスト名を確認できます。
13
15
  ![イメージ説明](24d12696b5ee184f729779bbe4690c59.png)
14
16
 
17
+
15
18
  ②続いて、不要なユーザー名とホスト名は下のコマンドで削除します。
16
19
  mysql> DROP USER 'root'@'%';
17
20
 
21
+
18
- ③さらに、これから利用するユーザー名とホスト名を下のコマンドで作成します。
22
+ ③さらに、これから利用するユーザー名(今回は:root) とホスト名(今回は:localhost) を下のコマンドで作成し
23
+  2行目のコマンドでパスワードを設定してあげます。(パスワード不要なら''で構わない。)
19
24
  mysql> CREATE USER 'root'@'localhost';
25
+ mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('***');
20
26
 
27
+
21
28
  ④最後に、このユーザー名とホスト名に以下のコマンドで権限を与えます。
22
29
  mysql> grant all on *.* to 'root'@'localhost';
23
30
 
31
+
24
32
  これで、PHPからSQLへの接続が許可されます。
25
33
 
26
34
  また、PHPからSQLへの接続に必要なコードは以下の通りです。

3

2016/04/07 07:40

投稿

Akirax
Akirax

スコア20

answer CHANGED
@@ -1,5 +1,5 @@
1
1
  5時間ハマってましたが解決しました。
2
- どうも、教科書の文章2つ問題あったようです。
2
+ どうも、教科書の文章PHPとSQLの接続出来無いようです。
3
3
  備忘録として、こちらにまとめます。(MacでMampユーザーの場合に限定されるかもしれませんが、、、)
4
4
 
5
5
  PDO構文を使ってPHPからSQLへデータを遷移させたい場合、

2

2016/04/06 14:51

投稿

Akirax
Akirax

スコア20

answer CHANGED
@@ -31,6 +31,8 @@
31
31
  $dsn='mysql:dbname=shop;host=localhost;charset=utf8';
32
32
  $dbh = new PDO('mysql:host=ホスト名;dbname=データベース名;charset=utf8',
33
33
  'ユーザー名','パスワード',array(PDO::ATTR_EMULATE_PREPARES => false));
34
+
35
+   #ここにSQLへの実行命令を記載
34
36
 
35
37
  }catch (Exception $e){
36
38
  print 'ただいま障害により大変ご迷惑をお掛けしております。';

1

a

2016/04/06 14:50

投稿

Akirax
Akirax

スコア20

answer CHANGED
@@ -29,7 +29,7 @@
29
29
 
30
30
  try{
31
31
  $dsn='mysql:dbname=shop;host=localhost;charset=utf8';
32
- $dbh = new PDO('mysql:host=localhost;dbname=shop;charset=utf8',
32
+ $dbh = new PDO('mysql:host=ホスト名;dbname=データベース名;charset=utf8',
33
33
  'ユーザー名','パスワード',array(PDO::ATTR_EMULATE_PREPARES => false));
34
34
 
35
35
  }catch (Exception $e){