Как предоставить все привилегии пользователю root в MySQL 8.0 - PullRequest
0 голосов
/ 04 мая 2018

Пытались

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

Получение

ОШИБКА 1064 (42000): у вас ошибка в синтаксисе SQL; проверьте руководство, которое соответствует версии вашего сервера MySQL для правильного синтаксиса для использования рядом с 'IDENTIFIED BY' root 'WITH GRANT OPTION' в строке 1.

Примечание: то же самое работает при попытке в предыдущих версиях.

Также пробовал

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

Получение

ОШИБКА 1410 (42000): Вам не разрешено создавать пользователя с GRANT

MySQL (8.0.11.0) имя пользователя / пароль - root / root.

Ответы [ 11 ]

0 голосов
/ 30 июня 2019

Просто мои 2 цента на эту тему. У меня возникла та же проблема с попыткой подключения из MySQL Workbench. Я использую виртуальную машину bitnami-mysql для настройки локальной песочницы для разработки.

В руководстве Bitnami сказано, что нужно выполнить команду «Предоставить все привилегии»:

/opt/bitnami/mysql/bin/mysql -u root -p -e "grant all privileges on *.* to 'root'@'%' identified by 'PASSWORD' with grant option";

Это явно не работало, я наконец-то заставил его работать, используя ответ Майка Лишке.

Мне показалось, что у пользователя root @% были неверные учетные данные. Так что, если вы пытались изменить привилегии пользователя и безуспешно, попробуйте:

  1. Удаление пользователя.
  2. Создайте пользователя снова.
  3. Убедитесь, что в вашем конфигурационном файле my.cnf установлена ​​правильная привязка. В моем случае я прокомментировал строку, так как это только для среды песочницы.

Из Mysql Console:

Список пользователей (полезно видеть всех ваших пользователей):

select user, host from mysql.user;

Удалить желаемый пользователь:

drop user '{{ username }}'@'%';

Создание пользователя и предоставление разрешений:

CREATE USER '{{ username }}'@'%' IDENTIFIED BY '{{ password }}';
GRANT ALL PRIVILEGES ON *.* TO '{{ username }}'@'%' WITH GRANT OPTION;

Запустите эту команду:

FLUSH PRIVILEGES;

Найдите ваш конфигурационный файл mysql 'my.cnf' и найдите строку, которая выглядит следующим образом:

bind-address=127.0.0.1

и прокомментируйте его, используя '#':

#bind-address=127.0.0.1

Затем перезапустите службу mysql.

Надеюсь, это поможет кому-то, у кого возникла та же проблема!

0 голосов
/ 27 июля 2019

Это может сработать

предоставить все на dbtest. * Для 'dbuser' @ '%', идентифицированного как 'mysql_password';

0 голосов
/ 17 мая 2019

Мои характеристики:

mysql --version
mysql  Ver 8.0.16 for Linux on x86_64 (MySQL Community Server - GPL)

Что сработало для меня:

mysql> CREATE USER 'username'@'localhost' IDENTIFIED BY 'desired_password';
mysql> GRANT ALL PRIVILEGES ON db_name.* TO 'username'@'localhost' WITH GRANT OPTION;

Ответ на оба запроса:

Query OK, O rows affected (0.10 sec*)

N.B .: Я создал базу данных (db_name) ранее и создавал учетные данные пользователя со всеми привилегиями, предоставленными всем таблицам в БД, вместо того, чтобы использовать пользователя root по умолчанию, который я где-то читал, - это лучшая практика.

0 голосов
/ 30 июня 2019

Проверьте, что ваше имя пользователя и домен совпадают с созданными ранее. Mysql выберите учетную запись двумя столбцами в пользовательской таблице. Если это не так, mysql может подумать, что вы хотите создать новую учетную запись по гранту, что не поддерживается после версии 8.0.

0 голосов
/ 02 мая 2019

Указанный пользователь просто не существует в вашем MySQL (поэтому MySQL пытается создать его с GRANT, как это было до версии 8, но терпит неудачу с ограничениями, введенными в этой версии).

На данный момент MySQL довольно тупой, поэтому, если у вас есть «root» @ «localhost» и вы пытаетесь предоставить привилегии «root» @ «%», он воспринимает их как разных пользователей, а не как обобщенное понятие для пользователя root для любого пользователя. хост, включая localhost.

Сообщение об ошибке также вводит в заблуждение.

Итак, если вы получаете сообщение об ошибке, проверьте существующих пользователей с помощью чего-то подобного

SELECT CONCAT("'", user, "'@'", host, "'") FROM mysql.user;

, а затем создайте пропавшего пользователя (как советовал Майк) или настройте команду GRANT в соответствии с фактическими требованиями существующего пользователя.

0 голосов
/ 16 мая 2019

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

mysql> FLUSH PRIVILEGES 
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES
0 голосов
/ 30 января 2019

Ну, у меня просто была такая же проблема. Даже если в маршруте было «%», не удалось подключиться удаленно. Теперь, глядя на файл my.ini (файл конфигурации в windows), оператор bind-address был пропущен.

Итак ... Я поставил это bind-address = * после [mysqld] и перезапустил службу. Теперь это работает!

0 голосов
/ 01 ноября 2018

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

mysql> CREATE USER 'root'@'%' IDENTIFIED BY 'password';

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
0 голосов
/ 25 июля 2018

Я слышал ту же проблему на CentOS, и это работало для меня (версия: 8.0.11)

mysql> ПРЕДОСТАВИТЬ ВСЕ ПРИВИЛЕГИИ НА . ДО 'root' @ '%'

0 голосов
/ 16 июля 2018

1) Это сработало для меня. Сначала создайте нового пользователя. Пример: как 'foo' с кодом pw 'bar.enter здесь

> mysql> CREATE USER 'foo'@'localhost' IDENTIFIED WITH mysql_native_password BY 'bar';

2) Замените приведенный ниже код именем пользователя на «foo».

> mysql> GRANT ALL PRIVILEGES ON database_name.* TO'foo'@'localhost';

Примечание: имя_базы_данных - это база данных, для которой вы хотите иметь привилегии, . означает все на всех

3) Войти как пользователь foo

mysql> mysql -u foo -p

Пароль: бар

4) Убедитесь, что ваше первоначальное соединение с Sequelize установлено на foo с pw bar.

...