it-swarm.com.ru

Предоставить ** все ** привилегии для базы данных

Я создал базу данных, например «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'
563
marioosh
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'%' WITH GRANT OPTION;

Так я создаю свои привилегии «Суперпользователь» (хотя я обычно указываю «Хост»).

ВАЖНАЯ ЗАМЕТКА

Хотя этот ответ может решить проблему доступа, WITH GRANT OPTION создает пользователя MySQL, который может редактировать разрешения других пользователей

Привилегия GRANT OPTION позволяет вам предоставлять другим пользователям или удалять из них те привилегии, которыми вы сами владеете. 

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

844
diagonalbatman

Это старый вопрос, но я не думаю, что принятый ответ является безопасным. Это хорошо для создания суперпользователя, но не хорошо, если вы хотите предоставить привилегии для одной базы данных.

grant all privileges on mydb.* to [email protected]'%' identified by 'mypasswd';
grant all privileges on mydb.* to [email protected] identified by 'mypasswd';

%, по-видимому, не охватывает сокетные связи, для которых localhost предназначен. WITH GRANT OPTION хорош только для суперпользователя, в противном случае это обычно угроза безопасности.

Надеюсь это поможет.

490
akostadinov

Это будет полезно для некоторых людей:

Из командной строки MySQL:

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

К сожалению, на данный момент newuser не имеет права что-либо делать с базами данных. Фактически, если newuser даже попытается войти в систему (с помощью пароля и пароля), он не сможет получить доступ к MySQL Shell. 

Поэтому первое, что нужно сделать, - предоставить пользователю доступ к информации, которая ему потребуется.

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';

Звездочки в этой команде относятся к базе данных и таблице (соответственно), к которым они имеют доступ - эта конкретная команда позволяет пользователю читать, редактировать, выполнять и выполнять все задачи во всех базах данных и таблицах. 

После того, как вы завершили разрешения, которые вы хотите настроить для своих новых пользователей, всегда обязательно перезагрузите все привилегии.

FLUSH PRIVILEGES;

Ваши изменения вступят в силу.

Для получения дополнительной информации: http://dev.mysql.com/doc/refman/5.6/en/grant.html

Если вас не устраивает командная строка, вы можете использовать такой клиент, как MySQL workbench , Navicat или SQLyog

107
user3008525

1. Создайте базу данных 

CREATE DATABASE db_name;

2. Создайте имя пользователя для базы данных db_name 

GRANT ALL PRIVILEGES ON db_name.* TO 'username'@'localhost' IDENTIFIED BY 'password';

3. Используйте базу данных 

USE db_name;

4. Наконец, вы находитесь в базе данных db_name и затем выполняете команды, такие как операции создания, выбора и вставки.

28
Bhavnesh

Этот SQL предоставляет все базы данных, но только основные привилегии. Их достаточно для Drupal или Wordpress и, как ни странно, позволяет создать одну учетную запись разработчика для локальных проектов. 

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, 
    INDEX, ALTER, CREATE TEMPORARY TABLES 
ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';
20
s6712
GRANT ALL PRIVILEGES ON mydb.* TO [email protected] IDENTIFIED BY 'mypasswd';

Работает для привилегий на схеме :) 

Необязательно: после mypasswd вы можете добавить WITH GRANT OPTION

13
Dutch Glory

Здравствуйте, я использовал этот код, чтобы иметь супер пользователя в 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 [email protected]'%'
    WITH GRANT OPTION;

а потом

FLUSH PRIVILEGES;
12
gastonnina

Я мог бы заставить его работать только добавив GRANT OPTION, без этого всегда получаю ошибку об отказе в разрешении

GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost' WITH GRANT OPTION;
12
GnanaPrakash

Доступ только с удаленного сервера к базе данных mydb

GRANT ALL PRIVILEGES ON mydb.* TO 'root'@'192.168.2.21';

Для доступа с удаленного сервера ко всем базам данных.

GRANT ALL PRIVILEGES ON * . * TO 'root'@'192.168.2.21';
5
Developer

Чтобы предоставить все привилегии в базе данных: mydb пользователю: myuser, просто выполните:

GRANT ALL ON mydb.* TO 'myuser'@'localhost';

или же:

GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost';

Ключевое слово PRIVILEGES не обязательно.

Также я не знаю, почему другие ответы предполагают, что IDENTIFIED BY 'password' ставится в конце команды. Я считаю, что это не требуется.

0
pgmank