7

Создание нового пользователя в MySQL с полным доступом к одной базе данных

2

Я хочу создать нового пользователя в MySQL и предоставить ему полный доступ только к одной базе данных, скажем, dbTest, которую я создаю с помощью команды create database dbTest;. Какие MySQL команды мне нужно выполнить для этого?

5 ответ(ов)

9

Попробуйте это, чтобы создать пользователя:

CREATE USER 'user'@'hostname';

А затем, чтобы предоставить ему доступ к базе данных dbTest, выполните:

GRANT ALL PRIVILEGES ON dbTest.* TO 'user'@'hostname' IDENTIFIED BY 'password';

Если вы запускаете код/сайт, который обращается к MySQL на той же машине, укажите в качестве hostname localhost.

Теперь разберем по пунктам:

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

  • ALL PRIVILEGES — это указывает, что пользователю будут даны все стандартные привилегии. Однако, это не включает привилегию на использование команды GRANT.

  • dbTest.* — эта часть инструкции MySQL применять указанные права для всей базы данных dbTest. Вы можете заменить * на конкретные имена таблиц или хранимые процедуры, если это необходимо.

  • TO 'user'@'hostname''user' — это имя создаваемого пользователя. Обратите внимание: одинарные кавычки обязателен. 'hostname' указывает MySQL, с каких хостов пользователь может подключаться. Если вы хотите, чтобы доступ был только с той же машины, используйте localhost.

  • IDENTIFIED BY 'password' — как вы могли догадаться, это устанавливает пароль для данного пользователя.

0

Создание пользователя и предоставление всех привилегий на базу данных

Войдите в MySQL:

mysql -u root

Теперь создайте пользователя и предоставьте привилегии:

GRANT ALL PRIVILEGES ON dbTest.* TO 'user'@'hostname' IDENTIFIED BY 'password';

Анонимный пользователь (только для локального тестирования)

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

GRANT ALL PRIVILEGES ON dbTest.* TO ''@'hostname';

Обратите внимание

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

0

Для того чтобы предоставить все привилегии пользователю на конкретную базу данных dbTest, вы можете использовать следующую команду в MySQL:

$ mysql -u root -p -e "grant all privileges on dbTest.* to '{user}'@'{host}' identified by '{long-password}'; flush privileges;"

Обратите внимание на следующие моменты:

  1. Замените {user} на имя пользователя, которому вы хотите предоставить привилегии.
  2. Замените {host} на хост, с которого этот пользователь будет подключаться (можно использовать '%', чтобы разрешить доступ с любого хоста).
  3. Замените {long-password} на необходимый пароль для пользователя.
  4. Если у MySQL пользователя нет пароля, вы можете исключить опцию -p или просто нажать клавишу Enter, чтобы пропустить ввод пароля.

После выполнения данной команды, пользователь получит все привилегии на базы данных dbTest и вам нужно будет выполнить flush privileges;, чтобы изменения вступили в силу.

0

Это сработало для меня.

CREATE USER 'spowner'@'localhost' IDENTIFIED BY '1234'; 
GRANT ALL PRIVILEGES ON test.* TO 'spowner'@'localhost'; 
FLUSH PRIVILEGES;

где

  • spowner : имя пользователя
  • 1234 : пароль пользователя spowner
  • test : база данных, к которой spowner имеет права доступа
0

Команда, приведенная ниже, сработает, если вы хотите создать нового пользователя и предоставить ему все права на конкретную базу данных (не на все базы данных в MySQL) на вашем локальном хосте.

GRANT ALL PRIVILEGES ON test_database.* TO 'user'@'localhost' IDENTIFIED BY 'password';

Эта команда предостав

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь