41

Oracle website seems to imply it only works on 15 and 14. http://dev.mysql.com/downloads/workbench/

Also two of my Ubuntu 16.04 machines don't seem to be able to connect (Access is Denied errors for root)

Picture

It installs okay. It opens okay. But it won't connect to localhost.

Anyone have any luck?

Jonathan
  • 3,904
  • 1
    Did you build it from source? What's the exact error given? Similar to when you specify an incorrect password? –  May 16 '16 at 23:39
  • Yes it is similar. But root has no password. And I can connect to root on command line correctly. And I double checked all priveleges and ran FLUSH PRIVILEGES;

    At this point I'm curious if anyone can connect to localhost from 16, since the Oracle site explicitly says 14 and 15 only

    – Jonathan May 16 '16 at 23:42
  • I didn't see Oracle make a claim it doesn't work, I just didn't see a binary for Xenial. I do however see mysql-workbench here, http://packages.ubuntu.com/xenial/mysql-workbench. That error doesn't seem like a software compatibility error. Turn logging on mysql and increase the logging level to 2 and see if the log shows your request. –  May 16 '16 at 23:50
  • @bc2946088 mysql-workbench is in the universe repository for 16.04 link – Videonauth May 16 '16 at 23:58
  • did you check any of the 4 options? ;-) WB works perfectly fine for me (with 5.7 btw). Proof below. – Rinzwind May 18 '16 at 20:02

11 Answers11

51

The issue is likely due to socket authentication being enabled for the root user by default when no password is set, during the upgrade to 16.04. This important caveat is documented in the 16.04 release notes:

Password behaviour when the MySQL root password is empty has changed. Packaging now enables socket authentication when the MySQL root password is empty. This means that a non-root user can't log in as the MySQL root user with an empty password.

For whatever reason, the MySQL Workbench that came with 16.04 doesn't work out of the box with MySQL server, at least for me. I tried using "Local Socket/Pipe" to connect in a number of different ways but to no avail.

The solution is to revert back to native password authentication. You can do this by logging in to MySQL using socket authentication by doing:

sudo mysql -u root

Once logged in:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

which will revert back to the native (old default) password authentication. If you've attempted some other method to fix the issue, you'll want to make sure the "plugin" field in mysql.user is set to "auth_token", which may require using mysqld_safe to log in to MySQL in the event you've been tinketing with things, like I did.

Credit to Miguel Nieto's blog post for this solution.

Mike M
  • 611
47

MySQL 5.7 and up don't support connecting as "root" in mysql-workbench so you must create a normal user and connect via that.

sudo mysql -u root -p

Create a user named "admin" and use that to connect in mysql-workbench.

CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
Jonathan
  • 3,904
8

This question might be two years old but my work with mysql-workbench tonight seems to have given me the answer to it.

root user now users auth_socket authentication by default. The only way root can gain access is by being logged in as root.

I found this out by running mysql -u root both as root user and standard user.

It would not work under standard user.

So my next question was - what user does mysql-workbench run as. Turns out it runs as standard user by default. To get it to run as root user it has to be run from root. So I went into root user CLI and type 'mysql-workbench'.

I then had to go into the settings for the root user as shown here. The file location is valid for an ubuntu 18.04 installation.

Root connection settings mysql-workbench.

If that socket location is invalid then you'll need to go into the mysql CLI from root or sudo and run the following command.

MySQL CLI command to find the socket.

After you have the correct settings test the connection. It should be successful and you're ready to go.

abu_bua
  • 10,783
  • Thank you for this! I shouldn't have to revert security-related changes to authentication to support an older tool, when I can just tell that tool to connect using the newer method. – Aaron Apr 25 '19 at 14:18
  • Do I achieve a local connection through this way? I don't understand why can't we connect through TCP/IP. – john gonidelis Dec 11 '19 at 22:09
  • hmm, so there is no way for tcp over ssh if the ssh user is not root then. Makes it hard. Sort of aligns with Postgres and the Postgres user. A pity we could not have allowed a MySQL user in the same way. – mckenzm Sep 19 '22 at 07:19
3

Create an user account with appropriate administrative privileges that can connect via mysql workbench using the auth_socket plugin. Note that this does not work for root connections to the mysql server.

Logon to mysql from a terminal session:

$sudo mysql

If you are able to do this then the auth_socket plugin is enabled and the root account is authenticating using this plugin. Note that this is the default setup when installing mysql on ubuntu after having run the secure installation script.

First create a mysql user for your account 'valerie':

mysql> CREATE USER 'valerie'@'localhost' IDENTIFIED WITH auth_socket;

Enable administrative privileges for the account:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'valerie'@'localhost' WITH GRANT OPTION;

Exit the shell:

mysql> exit

Then in mysql workbench:

  1. Create a new connection
  2. Select the connection method as Local Socket/Pipe
  3. Set the Socket/Pipe Path to: /var/run/mysqld/mysqld.sock (note that this is the path for a Debian / Ubuntu system and changes for other flavors of Linux)
  4. Set the username ('valerie' in this example)

You should be able to then connect to the mysql server with this connection.

David
  • 31
3

Try this

select mysql database

use mysql; UPDATE user set plugin='mysql_native_password' where User='root'; flush privileges; exit;

Then

sudo service mysql restart
zx485
  • 2,426
URI
  • 31
3

Open terminal of your ubuntu system and enter below code,

In my ubuntu 20.04 os system it works fine, able to enter password and workbeanch working fine.

sudo snap connect mysql-workbench-community:password-manager-service :password-manager-service
2

If you are getting this error in Workbench then follow this steps.

First simply log in with your current password:

sudo mysql -u root -p

Then change your password because having low strength password gives error sometimes.

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new-strong-password';

FLUSH PRIVILEGES;

Then simply exit and again login with your new password:

quit

sudo mysql -u root -p

Once you successfully logged in type the command:

use mysql;

It should show a message like 'Database changed' then type:

UPDATE user SET plugin='mysql_native_password' WHERE User='root';

After that type:

UPDATE mysql.user set authentication_string=PASSWORD('new-strong-password') where user='root';

Then type:

FLUSH PRIVILEGES;

Then simply exit:

quit

Now try to log in with your new password in your WORKBENCH. Hope it will work. Thank you.

  • Not really an answer because now there is a password. How do we achieve the same result without a password? – mckenzm Sep 19 '22 at 07:24
2

Works fine for me and I did nothing special. Installed mysql-server-5.7 and workbench both from command line and set up a user with a password and set up the normal database permissions (also with the normal method).

enter image description here

And with a database and table:

enter image description here

Rinzwind
  • 299,756
  • Interesting. Love the discworld reference. When I reconfigure the mysql packages, I do not get a prompt to change the password. Do you? I'm leaning towards thinking I have a corrupted install or some conflict. I think I'm supposed to get a prompt to change the root password. – Jonathan May 20 '16 at 00:59
1

I had the same problem on newly installed 21.04 Ubuntu, after trying all these methods that didn't quite work.

I tried to go into settings and allowed all the permissions and it worked for some reason.

Screenshot of the mysql setting

Greenonline
  • 2,081
0

I ran this command and it fixed my issue:

sudo snap connect mysql-workbench-community:password-manager-service :password-manager-service

Thanks to Jos for his answer here

Al Fahad
  • 273
0

MySQL server on AWS host running Ubuntu 16.04; mysql-workbench on Ubuntu 16.04 laptop; uses KeyPair connection.

After setting up Test db connection was working. But the actual connection always failed with a message like the one posted by Jonathan Leaders. Checked the log at ~/.mysql/workbench/log and found a few "permission denied" messages.

Now I can get mysql-workbench to work with: sudo mysql-workbench

And later I can go and chmod the directories needing permission.

Kevin Bowen
  • 19,615
  • 55
  • 79
  • 83