質問編集履歴

3

修正

2018/04/12 06:25

投稿

aiueoaiueoaiue
aiueoaiueoaiue

スコア94

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  ###実現したいこと
2
2
 
3
- MySQLで作成したユーザでIPアドレスを指定してPDO接続を行いたいのですが、上手く出来ません。ザ名がrootホスト名localhostだと上手くいきした。別途でkuronekoというユーザを作りホスト名を192.168.1.134(仮)と指定したときにデータベースエラーが出ま。どうすれば接続に成功するか分かる方回答お願いします。
3
+ MySQLで作成したユーザでIPアドレスを指定してPDO接続を行いたいのですが、上手く出来ません。以下のソ新規登録ボタンを押してもエラー。別途でkuronekoというユーザを作りホスト名を192.168.1.134(仮)と指定したときにデータベースエラーが出ました。どうすれば接続に成功するか分かる方回答お願いします。
4
4
 
5
5
  ###ソースコード
6
6
 

2

修正

2018/04/12 06:25

投稿

aiueoaiueoaiue
aiueoaiueoaiue

スコア94

test CHANGED
File without changes
test CHANGED
@@ -1,117 +1,207 @@
1
1
  ###実現したいこと
2
2
 
3
- MySQLで作成したユーザでIPアドレスを指定してPDO接続を行いたいのですが、上手く出来ません。ユーザ名がrootでホスト名がlocalhostだと上手くいきました。別途でkuronekoというユーザを作りホスト名を192.168.1.134(仮)と指定したときにエラーが出ます。どうすれば接続に成功するか分かる方回答お願いします。
4
-
5
- ###エラ
3
+ MySQLで作成したユーザでIPアドレスを指定してPDO接続を行いたいのですが、上手く出来ません。ユーザ名がrootでホスト名がlocalhostだと上手くいきました。別途でkuronekoというユーザを作りホスト名を192.168.1.134(仮)と指定したときにデータベースエラーが出ます。どうすれば接続に成功するか分かる方回答お願いします。
4
+
5
+ ###スコード
6
+
7
+ ```test.php
8
+
9
+ <?php
10
+
11
+ require 'password.php'; // password_hash()はphp 5.5.0以降の関数のため、バージョンが古くて使えない場合に使用
12
+
13
+ // セッション開始
14
+
15
+ session_start();
16
+
17
+
18
+
19
+ $db['host'] = "192.168.1.134"; // DBサーバのURL
20
+
21
+ $db['user'] = "kuroneko"; // ユーザー名
22
+
23
+ $db['pass'] = "tekitou"; // ユーザー名のパスワード
24
+
25
+ $db['dbname'] = "database"; // データベース名
26
+
27
+
28
+
29
+ // エラーメッセージ、登録完了メッセージの初期化
30
+
31
+ $errorMessage = "";
32
+
33
+ $signUpMessage = "";
34
+
35
+
36
+
37
+ // ログインボタンが押された場合
38
+
39
+ if (isset($_POST["signUp"])) {
40
+
41
+ // 1. ユーザIDの入力チェック
42
+
43
+ if (empty($_POST["username"])) { // 値が空のとき
44
+
45
+ $errorMessage = 'ユーザーIDが未入力です。';
46
+
47
+ } else if (empty($_POST["password"])) {
48
+
49
+ $errorMessage = 'パスワードが未入力です。';
50
+
51
+ } else if (empty($_POST["password2"])) {
52
+
53
+ $errorMessage = 'パスワードが未入力です。';
54
+
55
+ }
56
+
57
+
58
+
59
+ if (!empty($_POST["username"]) && !empty($_POST["password"]) && !empty($_POST["password2"]) && $_POST["password"] === $_POST["password2"]) {
60
+
61
+ // 入力したユーザIDとパスワードを格納
62
+
63
+ $username = $_POST["username"];
64
+
65
+ $password = $_POST["password"];
66
+
67
+
68
+
69
+ // 2. ユーザIDとパスワードが入力されていたら認証する
70
+
71
+ $dsn = sprintf('mysql: host=%s; dbname=%s; charset=utf8', $db['host'], $db['dbname']);
72
+
73
+
74
+
75
+ // 3. エラー処理
76
+
77
+ try {
78
+
79
+ $pdo = new PDO($dsn, $db['user'], $db['pass'], array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION));
80
+
81
+
82
+
83
+ $stmt = $pdo->prepare("INSERT INTO userData(name, password) VALUES (?, ?)");
84
+
85
+
86
+
87
+ $stmt->execute(array($username, password_hash($password, PASSWORD_DEFAULT))); // パスワードのハッシュ化を行う(今回は文字列のみなのでbindValue(変数の内容が変わらない)を使用せず、直接excuteに渡しても問題ない)
88
+
89
+ $userid = $pdo->lastinsertid(); // 登録した(DB側でauto_incrementした)IDを$useridに入れる
90
+
91
+
92
+
93
+ $signUpMessage = '登録が完了しました。あなたの登録IDは '. $userid. ' です。パスワードは '. $password. ' です。'; // ログイン時に使用するIDとパスワード
94
+
95
+ } catch (PDOException $e) {
96
+
97
+ $errorMessage = 'データベースエラー';
98
+
99
+ // $e->getMessage() でエラー内容を参照可能(デバッグ時のみ表示)
100
+
101
+ // echo $e->getMessage();
102
+
103
+ }
104
+
105
+ } else if($_POST["password"] != $_POST["password2"]) {
106
+
107
+ $errorMessage = 'パスワードに誤りがあります。';
108
+
109
+ }
110
+
111
+ }
112
+
113
+ ?>
114
+
115
+
116
+
117
+ <!doctype html>
118
+
119
+ <html>
120
+
121
+ <head>
122
+
123
+ <meta charset="UTF-8">
124
+
125
+ <title>新規登録</title>
126
+
127
+ </head>
128
+
129
+ <body>
130
+
131
+ <h1>新規登録画面</h1>
132
+
133
+ <form id="loginForm" name="loginForm" action="" method="POST">
134
+
135
+ <fieldset>
136
+
137
+ <legend>新規登録フォーム</legend>
138
+
139
+ <div><font color="#ff0000"><?php echo htmlspecialchars($errorMessage, ENT_QUOTES); ?></font></div>
140
+
141
+ <div><font color="#0000ff"><?php echo htmlspecialchars($signUpMessage, ENT_QUOTES); ?></font></div>
142
+
143
+ <label for="username">ユーザー名</label><input type="text" id="username" name="username" placeholder="ユーザー名を入力" value="<?php if (!empty($_POST["username"])) {echo htmlspecialchars($_POST["username"], ENT_QUOTES);} ?>">
144
+
145
+ <br>
146
+
147
+ <label for="password">パスワード</label><input type="password" id="password" name="password" value="" placeholder="パスワードを入力">
148
+
149
+ <br>
150
+
151
+ <label for="password2">パスワード(確認用)</label><input type="password" id="password2" name="password2" value="" placeholder="再度パスワードを入力">
152
+
153
+ <br>
154
+
155
+ <input type="submit" id="signUp" name="signUp" value="新規登録">
156
+
157
+ </fieldset>
158
+
159
+ </form>
160
+
161
+ <br>
162
+
163
+ <form action="Login.php">
164
+
165
+ <input type="submit" value="戻る">
166
+
167
+ </form>
168
+
169
+ </body>
170
+
171
+ </html>
172
+
173
+ ```
174
+
175
+ ###kuroneko@192.168.1.134でログインしたときのデータベース一覧
6
176
 
7
177
  ```ここに言語を入力
8
178
 
179
+ mysql> show databases;
180
+
181
+ +--------------------+
182
+
183
+ | Database |
184
+
185
+ +--------------------+
186
+
187
+ | information_schema |
188
+
189
+ | database |
190
+
191
+ | mysql |
192
+
193
+ | performance_schema |
194
+
195
+ | test |
196
+
197
+ +--------------------+
198
+
9
- Error:SQLSTATE[HY000] [1045] Access denied for user 'kuroneko'@'192.168.1.134' (using password: YES)
199
+ 5 rows in set (0.00 sec)
200
+
201
+
10
202
 
11
203
  ```
12
204
 
13
- ###ソースコード
14
-
15
- ```test.php
16
-
17
- <html>
18
-
19
- <head><title>PHP TEST</title></head>
20
-
21
- <body>
22
-
23
-
24
-
25
- <?php
26
-
27
-
28
-
29
- $dsn = 'mysql:dbname=database;host=192.168.1.134';
30
-
31
- $user = 'kuroneko';
32
-
33
- $password ='tekitou';
34
-
35
-
36
-
37
- try{
38
-
39
- $dbh = new PDO($dsn, $user, $password);
40
-
41
-
42
-
43
- print('接続に成功しました。<br>');
44
-
45
-
46
-
47
- $dbh->query('SET NAMES sjis');
48
-
49
-
50
-
51
- $sql = 'select * from shouhin';
52
-
53
- foreach ($dbh->query($sql) as $row) {
54
-
55
- print($row['id']);
56
-
57
- print($row['name'].'<br>');
58
-
59
- }
60
-
61
- }catch (PDOException $e){
62
-
63
- print('Error:'.$e->getMessage());
64
-
65
- die();
66
-
67
- }
68
-
69
-
70
-
71
- $dbh = null;
72
-
73
-
74
-
75
- ?>
76
-
77
-
78
-
79
- </body>
80
-
81
- </html>
82
-
83
- ```
84
-
85
- ###kuroneko@192.168.1.134でログインしたときのデータベース一覧
86
-
87
- ```ここに言語を入力
88
-
89
- mysql> show databases;
90
-
91
- +--------------------+
92
-
93
- | Database |
94
-
95
- +--------------------+
96
-
97
- | information_schema |
98
-
99
- | database |
100
-
101
- | mysql |
102
-
103
- | performance_schema |
104
-
105
- | test |
106
-
107
- +--------------------+
108
-
109
- 5 rows in set (0.00 sec)
110
-
111
-
112
-
113
- ```
114
-
115
205
  ###試したこと
116
206
 
117
207
  mysql> grant all privileges on database.* to kuroneko@"192.168.1.%"

1

2018/04/12 06:24

投稿

aiueoaiueoaiue
aiueoaiueoaiue

スコア94

test CHANGED
File without changes
test CHANGED
@@ -114,7 +114,7 @@
114
114
 
115
115
  ###試したこと
116
116
 
117
- mysql> grant all privileges on xxxdb.* to kataoka@"192.168.1.%"
117
+ mysql> grant all privileges on database.* to kuroneko@"192.168.1.%"
118
118
 
119
119
  -> identified by 'hoge' with grant option ;
120
120