Reputation: 647
I usualy setup correctly MySQL for having remote access.
And currently I got stuck with MySQL 8.
The first thing is that on the mysql.conf.d/mysqld.cnf , I don't have any bind-address line, so I added it by hand (bind-address 0.0.0.0) And I granted access to the user on '%'
When I connected I got the message "Authentication failed"
But it works well on localhost/command line
Upvotes: 35
Views: 97166
Reputation: 510
Mysql 8: Following solution worked for me:
vim /etc/mysql/mysql.conf.d/mysqld.cnf
CREATE USER 'docker'@'%' IDENTIFIED BY 'your_password_here';
GRANT ALL PRIVILEGES ON *.* TO 'docker'@'%';
Upvotes: 1
Reputation: 13248
Remote Access in MySQL 8:
1) Allow access from any host
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 0.0.0.0
2) Allow the user to access from anywhere:
mysql
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
UPDATE mysql.user SET host='%' WHERE user='root';
3) Change authentication to password
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'ThePassword';
Upvotes: 28
Reputation: 199
Had the same problem, Connected to MySQL Workbench and updated the User privilege.
MySQL version : 8.0.20 Community. OS : Windows 10.
Upvotes: 16
Reputation: 1197
bind_address
parameter from the my.ini
file.(The file name is different depend on the OS. On Linux my.ini is actually my.cnf located in directory /etc/mysql/)
Create the root
user (yes, a new user because what exists is 'root@localhost' which is local access only):
CREATE USER 'root'@'%' IDENTIFIED BY '123';
Give the privileges:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
For DBA user, add
WITH GRANT OPTION
at the end.e.g.
CREATE USER 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;
Because it does not work CREATE with GRANT?
MySQL 8 can no longer create a user with GRANT
, so there is an error in IDENTIFIED BY '123'
if you try to use it with GRANT
, which is the most common error.
Upvotes: 64
Reputation: 759
For MySQL 8 open the mysqld.cnf file
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
And modify or add the bind-address option:
[mysqld]
bind-address = 0.0.0.0
Restart the mysql server
sudo service mysql restart
Upvotes: 4