mysql -u edge_user -p -h 127.0.0.1 -P 3306 edge_db and I got error 1698 (28000) access denied for user ... @localhost
The error message you're encountering, "Access denied for user ...@localhost (error 1698, 28000)," typically indicates that the MySQL user you're trying to connect with does not have the necessary permissions to access the database from the specified host. Here are some steps you can take to troubleshoot and resolve this issue:
Make sure that the user edge_user
has the appropriate privileges to access the edge_db
database. You can check the privileges by logging in as a user with sufficient permissions (like root
) and running:
SELECT user, host FROM mysql.user;
This will show you the users and the hosts they are allowed to connect from.
If edge_user
does not have the necessary privileges, you can grant them using the following command (logged in as a user with sufficient privileges):
GRANT ALL PRIVILEGES ON edge_db.* TO 'edge_user'@'127.0.0.1' IDENTIFIED BY 'your_password';
FLUSH PRIVILEGES;
Make sure to replace 'your_password'
with the actual password for edge_user
.
Ensure that you are connecting from the correct hostname. The error message indicates that the connection is being attempted from localhost
, but you are using 127.0.0.1
in your command. MySQL treats localhost
and 127.0.0.1
differently. If you want to connect using localhost
, you can try:
mysql -u edge_user -p -h localhost -P 3306 edge_db
In some cases, MySQL may be configured to use a different authentication method (like auth_socket
) for certain users. You can check the authentication method with:
SELECT user, host, plugin FROM mysql.user WHERE user = 'edge_user';
If the plugin is set to auth_socket
, you may need to change it to mysql_native_password
:
ALTER USER 'edge_user'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY 'your_password';
After making changes to user privileges or authentication methods, it may be necessary to restart the MySQL service:
sudo systemctl restart mysql
Ensure that your MySQL server is configured to accept connections on the specified IP address and port. Check the my.cnf
or my.ini
configuration file for the bind-address
setting.
If you are connecting from a different machine, ensure that there are no firewall rules blocking access to the MySQL port (3306).
By following these steps, you should be able to resolve the access denied error for the MySQL user. If the problem persists, double-check the user credentials and ensure that the MySQL server is running and accessible.