Я'создал базу данных, например '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'
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'%' WITH GRANT OPTION;
Так я создаю свои привилегии "Суперпользователя" (хотя обычно я указываю хост).
Хотя этот ответ может решить проблему доступа, WITH GRANT OPTION
создает пользователя MySQL, который может редактировать разрешения других пользователей.
Привилегия GRANT OPTION позволяет вам предоставлять другим пользователям или снимать с других пользователей те привилегии, которыми обладаете вы сами.
Из соображений безопасности не следует использовать этот тип учетной записи для любых процессов, к которым будет иметь доступ общественность (например, для веб-сайта). Для таких целей рекомендуется создать пользователя с привилегиями только для баз данных.
Это старый вопрос, но я не думаю, что принятый ответ безопасен. Это хорошо для создания суперпользователя, но не очень хорошо, если вы хотите предоставить привилегии для одной базы данных.
grant all privileges on mydb.* to myuser@'%' identified by 'mypasswd';
grant all privileges on mydb.* to myuser@localhost identified by 'mypasswd';
%
, по-видимому, не охватывает сокетные соединения, для которых предназначен localhost
. WITH GRANT OPTION
подходит только для суперпользователя, в противном случае это обычно представляет угрозу безопасности.
Надеюсь, это поможет.
Для некоторых людей это будет полезно:
Из командной строки MySQL:
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
К сожалению, на данный момент newuser не имеет никаких прав на работу с базами данных. На самом деле, если newuser даже попытается войти в систему (с паролем, password), он не сможет попасть в оболочку MySQL.
Поэтому первое, что необходимо сделать, - это предоставить пользователю доступ к необходимой ему информации.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
Звездочки в этой команде обозначают базу данных и таблицу (соответственно), к которым пользователь может получить доступ - эта конкретная команда позволяет пользователю читать, редактировать, выполнять все задачи во всех базах данных и таблицах.
После того как вы окончательно определитесь с правами, которые вы хотите установить для своих новых пользователей, не забудьте перезагрузить все привилегии.
FLUSH PRIVILEGES;
Теперь ваши изменения вступят в силу.
Дополнительная информация: http://dev.mysql.com/doc/refman/5.6/en/grant.html
Если вам неудобно работать с командной строкой, вы можете использовать клиент, например MySQL workbench, Navicat или SQLyog.
&ампер;усилитель; nbsp;1. Создать базу данных
CREATE DATABASE db_name;
&ампер;усилитель; nbsp;2. Создать имя пользователя для базы данных имя_базы_данных
GRANT ALL PRIVILEGES ON db_name.* TO 'username'@'localhost' IDENTIFIED BY 'password';
&ампер;усилитель; nbsp;3. Использовать базу данных
USE db_name;
&ампер;усилитель; nbsp;4. Наконец, вы находитесь в имя_базы_данных базы данных, а затем выполнить команды, как создать , выбрать и вставить операций.
Этот SQL гранты на все базы данных, но только основные привилегии. Они'вновь достаточно для Drupal или WordPress и как придирчивость, позволяет одному разработчику счета для локальных проектов.
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP,
INDEX, ALTER, CREATE TEMPORARY TABLES
ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON mydb.* TO myuser@localhost IDENTIFIED BY 'mypasswd';
Работает на льготы по схеме :)
Дополнительно: после mypasswd
можно добавить грант
вариант
Я мог бы в состоянии заставить его работать только при добавлении опции грант
, без этого всегда получаю отказано в доступе ошибка
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost' WITH GRANT OPTION;
Привет, я использовал этот код для супер пользователя в MySQL
GRANT EXECUTE, PROCESS, SELECT, SHOW DATABASES, SHOW VIEW, ALTER, ALTER ROUTINE,
CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP,
EVENT, INDEX, INSERT, REFERENCES, TRIGGER, UPDATE, CREATE USER, FILE,
LOCK TABLES, RELOAD, REPLICATION CLIENT, REPLICATION SLAVE, SHUTDOWN,
SUPER
ON *.* TO mysql@'%'
WITH GRANT OPTION;
а потом
FLUSH PRIVILEGES;
Получить доступ к удаленному серверу, к базе данных mydb только
GRANT ALL PRIVILEGES ON mydb.* TO 'root'@'192.168.2.21';
Получить доступ к удаленному серверу, для всех баз данных.
GRANT ALL PRIVILEGES ON * . * TO 'root'@'192.168.2.21';
Предоставить все привилегии на базы данных: базы данных mydb
пользователь: мой_логин
, просто выполните:
GRANT ALL ON mydb.* TO 'myuser'@'localhost';
или:
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost';
Ключевое слово "привилегии" не надо.
Также я не знаю, почему другие ответы говорят о том, что выявленные 'пароль'` поставить на конце команды. Я считаю, что это не требуется.