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

Я создал базу данных, например "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'

Ответ 1

GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'%' WITH GRANT OPTION;

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

ВАЖНОЕ ПРИМЕЧАНИЕ

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

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

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

Ответ 2

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

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 подходит только для суперпользователя, в противном случае это обычно представляет собой риск безопасности.

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

Ответ 3

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

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

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

К сожалению, на данный момент у newuser нет никаких разрешений делать что-либо с базами данных. На самом деле, если newuser даже пытается войти (с паролем, паролем), они не смогут добраться до оболочки 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

Ответ 4

  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, а затем выполняете команды, такие как создание, выбор и вставка операций.

Ответ 5

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

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, 
    INDEX, ALTER, CREATE TEMPORARY TABLES 
ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';

Ответ 6

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

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

Ответ 7

Здравствуйте, я использовал этот код для суперпользователя в 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;

Ответ 8

GRANT ALL PRIVILEGES ON mydb.* TO [email protected] IDENTIFIED BY 'mypasswd';

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

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

Ответ 9

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

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

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

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