0

このフォーラムで質問するのはこれが初めてです。

私はphpプロジェクトに取り組んでおり、phpを介してデータベースを作成し、いくつかの空のテーブルを挿入する必要があります。

ここでの問題は、スーパーユーザーに特権を追加しようとすると、常に構文に関するエラー メッセージが表示されることです (何らかの理由で、そうしないと、データベースにアクセスする権限がないことを示すエラー メッセージが表示されます)。

データベースを作成して権限を割り当てるコードは次のとおりです。

$sql = "CREATE DATABASE IF NOT EXISTS `database` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci; "; 

$sql .= "GRANT SELECT database.* TO 'superuser'@'localhost' ";

$sql .= "GRANT ALL ON database." TO 'superuser'@'localhost' IDENTIFIED BY 'password'; ";

$sql .= "FLUSH PRIVILEGES"; 

何が悪かったのか教えてもらえますか? 前もって感謝します!

4

1 に答える 1

1

各 SQL ステートメントをセミコロンで終了する必要があります。;最初のGRANT. 「データベース」は予約語であるため、2 番目のGRANT使用database."および はバッククォートで囲む必要があります。database.*とはいえ、最初GRANTのものは に含まれるので省略できますGRANT ALL

$sql = "CREATE DATABASE IF NOT EXISTS `database` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci; ";
$sql .= "GRANT ALL ON `database`.* TO 'superuser'@'localhost' IDENTIFIED BY 'password'; ";
$sql .= "FLUSH PRIVILEGES;"; 

HEREDOC形式を使用して読みやすくすることもできます

$sql = <<<SQL
  CREATE DATABASE IF NOT EXISTS `database` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
  GRANT ALL ON `database`.* TO 'superuser'@'localhost' IDENTIFIED BY 'password';
  FLUSH PRIVILEGES; 
SQL;
于 2013-11-09T17:13:55.303 に答える