У меня есть django.db.utils.OperationalError: (1698, "Access denied for user 'root'@'localhost'") при использовании mysql. Имя пользователя и pw верны:

DB_HOST = '127.0.0.1'
DB_USER = 'root'
DB_PASSWORD = ''

Я могу войти в MySQL от имени пользователя root:

$ sudo mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 16

Но не как cchilders:

$ mysql -u root
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

Это может способствовать проблеме. В прошлый раз, когда я установил mysql, этого не произошло, поэтому для меня это не имеет смысла. У меня клиент нормально

$ pip3 freeze
Django==1.10.5
mysqlclient==1.3.9

Как я могу разрешить запуск MySQL моим обычным пользователем, чтобы я мог запустить django в терминале? Спасибо

Грязное решение:

Без каких-либо исправлений всегда запускайте mysql как sudo

5
codyc4321 9 Янв 2017 в 09:18

3 ответа

Лучший ответ

Причина, по которой вы можете войти в систему как root на своем сервере, заключается в том, что вы, вероятно, указали пароль в файле .my.cnf в /root (т. Е. В домашнем каталоге пользователя root) , Проверьте, есть ли там пароль, и используйте его также для cchilders. Затем вы можете создать пользователя приложения для django, чтобы убедиться, что приложение django только читает / пишет / и т.д. к базам данных, к которым ему необходим доступ, а не доступ через пользователя root mysql.

create user 'django'@'localhost' identified by 'django-user-password';
grant usage on *.* to 'django'@'localhost';
grant all privileges on django-database-1.* to 'django'@'localhost';
6
Yvette Tan 7 Май 2018 в 06:19
    $ sudo mysql -u root # I had to use "sudo" since is new installation

    mysql> USE mysql;
    mysql> SELECT User, Host, plugin FROM mysql.user;

    As we can see in the query, the root user is using the auth_socket plugin

    There are 2 ways to solve this:

    1) You can set the root user to use the mysql_native_password plugin
    2) shown in above post

    option 1:
    mysql> USE mysql;
    mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
    mysql> FLUSH PRIVILEGES;
    mysql> exit;

    option 2:
seen in the above post
0
jincy mariam 14 Окт 2019 в 07:19

Создайте пользователя без полномочий SQL и измените переменную DB_USER в файле settings.py Django

1
zubhav 9 Янв 2017 в 11:24