Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Mysql 8 remote access

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

like image 351
sHaDeoNeR Avatar asked May 28 '18 16:05

sHaDeoNeR


People also ask

Where is the bind address in MySQL 8?

In MySQL 8 database configuration file, you will not see the bind-address setting. So you just need to manually add the bind-address under [mysqld] tag. Save the configuration file and close it.


4 Answers

  1. Delete or comment the 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/)

  1. Restart the service.
  2. 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';

  3. 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.

like image 165
rbz Avatar answered Oct 10 '22 09:10

rbz


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'; 
like image 30
Shadi Namrouti Avatar answered Oct 10 '22 10:10

Shadi Namrouti


Had the same problem, Connected to MySQL Workbench and updated the User privilege.

MySQL version : 8.0.20 Community. OS : Windows 10.

  1. Open MySQL Workbench --> Server --> Users and Privileges
  2. Select the user
  3. Change the Limit to Hosts Matching to "%" for accessing from any host.
  4. Apply changes.
  5. Restart MySQL Service if required. It worked for me with out restarting.

Screen shot, MySQL Workbench 8.0.20

like image 32
Siddharth G Avatar answered Oct 10 '22 09:10

Siddharth G


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
like image 43
Milan Avatar answered Oct 10 '22 10:10

Milan