Предоставяне на **всички** привилегии на базата данни
Създадох база данни, например 'mydb'.
CREATE DATABASE mydb CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER 'myuser'@'%' IDENTIFIED BY PASSWORD '*HASH';
GRANT ALL ON mydb.* TO 'myuser'@'%';
GRANT ALL ON mydb TO 'myuser'@'%';
GRANT CREATE ON mydb TO 'myuser'@'%';
FLUSH PRIVILEGES;
Сега мога да влизам в базата данни отвсякъде, но не мога да създавам таблици.
Как да предоставя всички привилегии за тази база данни и (в бъдеще) за таблиците. Не мога да създавам таблици в базата данни 'mydb'. Винаги получавам:
CREATE TABLE t (c CHAR(20) CHARACTER SET utf8 COLLATE utf8_bin);
ERROR 1142 (42000): CREATE command denied to user 'myuser'@'...' for table 't'
587
3
Така създавам своите "Супер потребител" привилегии (въпреки че обикновено посочвам хост).
IMPORTANT NOTE
Въпреки че този отговор може да реши проблема с достъпа,
WITH GRANT OPTION
създава MySQL потребител, който може да редактира правата на други потребители.От съображения за сигурност не бива да използвате този тип потребителски акаунт за процеси, до които ще има публичен достъп (напр. уебсайт). Препоръчително е да създадете потребител с права само за база данни за този вид употреба.
Това е стар въпрос, но не мисля, че приетият отговор е безопасен. Той'е добър за създаване на супер потребител, но не е добър, ако искате да дадете привилегии на една база данни.
Изглежда, че
%
не покрива сокетните комуникации, за които е предназначенlocalhost
.WITH GRANT OPTION
е добър само за суперпотребител, в противен случай обикновено представлява риск за сигурността.Надявам се това да помогне.
Това ще бъде полезно за някои хора:
От командния ред на MySQL:
За съжаление, в този момент newuser няма права да прави каквото и да било с базите данни. Всъщност, ако newuser дори се опита да влезе в системата (с паролата, password), той няма да може да достигне до шела на MySQL.
Затова първото нещо, което трябва да направите, е да осигурите на потребителя достъп до информацията, която ще му е необходима.
Звездичките в тази команда се отнасят до базата данни и таблицата (съответно), до които те имат достъп - тази конкретна команда позволява на потребителя да чете, редактира, изпълнява и изпълнява всички задачи във всички бази данни и таблици.
След като сте определили окончателно разрешенията, които искате да зададете на новите си потребители, винаги не забравяйте да презаредите всички привилегии.
Вашите промени вече ще са в сила.
За повече информация: http://dev.mysql.com/doc/refman/5.6/en/grant.html
Ако не ви е удобно да работите с командния ред, можете да използвате клиент като MySQL workbench, Navicat или SQLyog.