"Access denied for user 'root'@'localhost'" during pymysql.connections

April 14, 2018 6k views
MySQL Ubuntu 16.04 Python LAMP Stack

I tried to set up a LAMP server by following this article. It was set up without errors and I can “ssh root@localhost” with my password. But when I was ready to test it by going to http://my_server_ip using Firefox, it gave me a sequence of function calls leading up to the error:
In /var/www/test/index.py
15 user=‘root’,
16 passwd='mypasswd’,
=> 17 host='localhost’)
18 c = conn.cursor()
host undefined
In in Connect(args=(), *kwargs={'db’: 'example’, 'host’: 'localhost’, 'passwd’: 'my
passwd’, 'user’: 'root’})
88 “”“
89 from .connections import Connection
=> 90 return Connection(args, *kwargs)
92 from . import connections as origconn
Connection = <class 'pymysql.connections.Connection’>, args = (), kwargs = {'db’: 'example’, 'host’: 'localhost’, 'passwd’: 'mypasswd’, 'user’: 'root’}

697 self.
sock = None
698 else:
=> 699 self.connect()
701 def createssl_ctx(self, sslp):
self = <pymysql.connections.Connection object>, self.connect = <bound method Connection.connect of <pymysql.connections.Connection object>>
errorclass = <class 'pymysql.err.InternalError’>, errno = 1698, errval = "Access denied for user 'root’@'localhost’”

InternalError: (1698, “Access denied for user 'root’@'localhost’”)

Can you please help me with this?

1 Answer

After some research, it is solved by making a couple of changes.

  1. For errno 1698, see link: mysql> update user set plugin=“mysqlnativepassword” where user=‘root’;

  2. For errno 1045, see link: mysql> update user set authentication_string=password(“myPasswd#”) where user='root’;

  3. For ERROR 1819 (HY000): Your password does not satisfy the current policy requirements, see link for the password rule and how to change it.

Have another answer? Share your knowledge.