Предоставить** все * * права доступа к базе данных


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

10 ответов:

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

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

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

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

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

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

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

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

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

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

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

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

FLUSH PRIVILEGES;

Теперь ваши изменения вступят в силу.

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

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

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

CREATE DATABASE db_name;

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

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

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

USE db_name;

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

этот 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 вы можете добавить 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;

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

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

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

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

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

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

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

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

или:

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

The PRIVILEGES ключевое слово не надо.

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