Я получаю сообщение об ошибке "Доступ запрещен для пользователя 'root' @ 'localhost" при попытке использовать Connector / Python - PullRequest
0 голосов
/ 22 сентября 2019

Я пытаюсь подключиться к моей локальной системе mysql, используя python.

Я отмечаю, что могу войти в систему mysql только из консоли с помощью sudo / usr / bin / mysql -u root -p

Я просмотрел сеть и очень смущен всеми предложениями, которые ни у меня не работают.

Как я пытался

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

Что дает мне ...

+------------------+-----------+-----------------------+
| User             | Host      | plugin                |
+------------------+-----------+-----------------------+
| root             | localhost | mysql_native_password |
| mysql.session    | localhost | mysql_native_password |
| mysql.sys        | localhost | mysql_native_password |
| debian-sys-maint | localhost | mysql_native_password |
| keith            | localhost | mysql_native_password |
+------------------+-----------+-----------------------+

5 rows in set (0.12 sec)

...

...

import mysql.connector

cnx = mysql.connector.connect(user='root', password='#########',
                          host='127.0.0.1',
                          database='SurveyData')
cnx.close()

...

Я получаю следующие ошибки

...

MySQLInterfaceError                       Traceback (most recent call last)
~/miniconda3/lib/python3.7/site-packages/mysql/connector  /connection_cext.py in _open_connection(self)
    199         try:
--> 200             self._cmysql.connect(**cnx_kwargs)
    201         except MySQLInterfaceError as exc:

MySQLInterfaceError: Access denied for user 'root'@'localhost'

During handling of the above exception, another exception occurred:

1 Ответ

0 голосов
/ 23 сентября 2019

Кажется, что вы используете root @ localhost, а затем подключаетесь.Вы пробовали root@127.0.0.1?

Также проверьте: Доступ запрещен для пользователя 'root' @ 'localhost' (с использованием пароля: ДА) - Нет привилегий?

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

:~$ mysql -u root -p
Enter password: 
mysql> GRANT SELECT ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)

Предоставление специальных привилегий схемы учетной записи пользователя.Откройте терминал, запустите команду ниже.

:~$ mysql -u root -p
Enter password: 
mysql> GRANT SELECT,UPDATE,INSERT,DELETE ON SurveyData.* TO 'root'@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON SurveyData.* TO 'root'@'localhost';
Query OK, 0 rows affected (0.00 sec)

Я использую этот скрипт для теста:

try:
    connection = mysql.connector.connect(host='localhost',
                                         database='SurveyData',
                                         user='root',
                                         password='########')

    if connection.is_connected():
        db_Info = connection.get_server_info()
        print("Connected to MySQL Server version ", db_Info)
        cursor = connection.cursor()
        cursor.execute("select database();")
        record = cursor.fetchone()
        print("Your connected to database: ", record)

except Error as e:
    print("Error while connecting to MySQL", e)
finally:
    if (connection.is_connected()):
        cursor.close()
        connection.close()
        print("MySQL connection is closed")
...