2015-03-23 3 views
1

Я делаю это, чтобы создать учетную запись пользователя SQL и предоставить разрешения, создание работает нормально, но когда я получаю возможность предоставить часть, она терпит неудачу.Ошибка синтаксиса MySQL - где я ошибся?

Обновление: теперь он не выдает ошибку, но он просто не дает разрешений, запутанной ошибки, синтаксис правильный, все.

Код:

$query = $this->ci->db->query("GRANT ALL PRIVILEGES ON ".$db_add." TO '".$username."'@'localhost' WITH GRANT OPTION;"); 
+0

Вы не можете связать информацию базы данных/таблицы, не допускается. –

+0

Если я вставляю напрямую, хотя я запускаю риск SQL-инъекции. Говорю, что я принудительно использовал ctype_alnum для строк, чтобы убедиться, что они не искажены. Единственное исключение - это проверка, если она содержит _, если это так, замените ее воздухом, затем ctype_alnum, затем продолжайте, если она будет чистой. – CBMC

+0

В порядке, чтобы связать имя пользователя, вы просто не можете привязать имя базы данных/имя таблицы. –

ответ

0

Вы не процитировать объекты базы данных с одинарными кавычками, можно использовать кавычку или ничего, если ваши имена объектов чувствительны и не требуют цитировании или побега.

Кроме того, вам нужно указать, какие объекты в базе данных, или * для всего.

Кроме того, не предоставляйте ALL или WITH GRANT OPTION, если вы на самом деле не имеете в виду его.

Кроме того, учетные записи с этой большой привилегией почти наверняка не должны создаваться автоматически по какой-либо причине.

Кроме того, в то время как следующая форма синтаксически корректен ...

GRANT ALL PRIVILEGES ON `the_database`.* to 'leethaxor'@'localhost'; 

... если вы еще не создать пользователя, то вам просто предоставлен доступ к любому, кто может догадаться, что имя из указанному хосту, поскольку пароль пуст. Первый грант должен включать в себя что-то вроде ...

... IDENTIFIED BY 'a_password' ... 

http://dev.mysql.com/doc/refman/5.6/en/grant.html

Смежные вопросы