Как правильно разрешить ОШИБКУ 1044 на MySQL? Другие ответы здесь не добиваются цели - PullRequest
0 голосов
/ 03 сентября 2018

Я изучаю язык SQL и пытаюсь использовать MySQL в Linux Mint для проверки своей работы, однако я сталкиваюсь с такими проблемами, как ОШИБКА 1044. Я попытался следовать всем различным советам, но затем я столкнулся с другим код ошибки, а затем в попытке решить новую проблему, я вижу другой код ошибки, и в попытке решить эту другую новую проблему я вижу другой код ошибки и повторяю ad nauseam. Поэтому я начинаю с нуля в надежде, что моя конкретная проблема будет решена.

Я пробовал это

mysql> USE preciousMetals;
ERROR 1044 (42000): Access denied for user 'phpmyadmin'@'localhost' to database 'preciousMetals'

Проверено это

mysql> show grants;
+--------------------------------------------------------------------+
| Grants for phpmyadmin@localhost                                    |
+--------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'phpmyadmin'@'localhost'                     |
| GRANT ALL PRIVILEGES ON `phpmyadmin`.* TO 'phpmyadmin'@'localhost' |
+--------------------------------------------------------------------+
2 rows in set (0.00 sec)

Я ввожу эту команду в подсказку

mysql> select user ();
+----------------------+
| user ()              |
+----------------------+
| phpmyadmin@localhost |
+----------------------+
1 row in set (0.00 sec)

Тогда это

mysql> select current_user ();
+----------------------+
| current_user ()      |
+----------------------+
| phpmyadmin@localhost |
+----------------------+
1 row in set (0.00 sec)

Я хочу пока держать этот вопрос аккуратным и "маленьким", чтобы он не был повсюду. Я добавлю, что я пытался войти в систему как root, как говорилось в некоторых сообщениях, но у меня нет пароля для этого. Я никогда не устанавливал пароль для пользователя root только для пользователя во время установки. Я попробовал пароль пользователя и ОШИБКУ. Пытался найти его или сбросить, и, видимо, у меня нет никаких привилегий или прав или что-то еще. Я пытаюсь это исправить и, вы знаете, еще одна ОШИБКА. >: O

Может кто-нибудь помочь с решением ERROR 1044? Есть ли причина, по которой я сталкиваюсь с таким количеством проблем? Это глючная СУБД или проблема связана с моим настоящим компьютером и тем, как он обрабатывает вещи? Есть ли хорошее решение, чтобы избавиться от всех проблем и просто использовать СУБД без Some Assembly Required вещь.

1 Ответ

0 голосов
/ 03 сентября 2018

Это глючная СУБД ...?

Это не ошибка, это особенность!

(Я не могу сказать вам, как долго я ждал, чтобы сказать это без иронии.)

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

Привилегия USAGE ON *.* означает, что вы можете подключиться к серверу MySQL, но это не значит, что у вас есть какие-либо привилегии для любой из баз данных на этом сервере.

Привилегия ALL PRIVILEGES ON phpmyadmin .* означает, что у вас есть привилегии для всех таблиц базы данных phpmyadmin. У вас нет привилегий в любой другой базе данных. Поэтому, когда вы пытаетесь USE preciousMetals;, он немедленно отклоняет запрос.

Тот факт, что у вас нет прав доступа к какому-либо конкретному ресурсу, не является ошибкой в ​​программном обеспечении.

По аналогии, это похоже на Linux, если вы попытаетесь cd <directory>, если у вас нет прав для этого. Вы бы - правильно - получили ошибку, если бы сделали это.

$ cd secret_directory
-bash: cd: secret_directory: Permission denied

Вам необходимо предоставить пользователю phpmyadmin более широкие привилегии. У вас есть доступ к root учетной записи MySQL? Обычно это тот, который имеет все привилегии для всех баз данных и возможность предоставлять привилегии другим пользователям MySQL.

Что касается вашего второго вопроса, существует по крайней мере еще один продукт баз данных SQL, который вообще не обеспечивает GRANT / REVOKE или привилегии: SQLite . Пока у вас есть доступ на уровне Linux для открытия файла базы данных, у вас есть свободный доступ ко всем таблицам в нем. Там не реализована система привилегий доступа. Но SQLite не совсем альтернатива MySQL. Нет поддержки одновременного многопользовательского доступа, сетевых подключений или ряда других функций, которые вам, вероятно, необходимы.


Для MySQL вы можете запустить его в режиме без применения паролей или привилегий.

  1. Редактировать файл параметров MySQL (обычно /etc/my.cnf в системах Linux).
  2. Добавить опцию, чтобы отключить принудительное применение. Это должно быть в любом месте ниже группы параметров [mysqld] в файле параметров.

    [mysqld]
    skip_grant_tables
    
  3. Перезапустите процесс mysqld. Это делается с помощью команды оболочки от имени пользователя root:

    $ sudo service mysql restart
    

После этого вам не нужно будет вводить пароль, а права SQL не применяются.

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

...