修改mysql配置文件。mysql
vim /etc/mysql/mysql.conf.d/mysqld.cnf
找到 bind-address = 127.0.0.1 注释掉,保存退出。
复制代码
容许全部用户远程登陆sql
在服务器上经过root登陆mysql,输入密码登陆数据库
mysql -u root -p
复制代码
修改 root 的 host 属性为 %,vim
use mysql;
select host, user from user;
update user set host = '%' where user = 'root';
复制代码
在远程客户端Navicat上测试链接。服务器
若是Navicat提示错误:socket
1698- access denied for user 'root'@'ip'
复制代码
可能的缘由为:测试
在最近的Ubuntu安装(固然也多是其余安装)中,MySQL默认使用了UNIX auth_socket
plugin插件。spa
简单来讲这意味着当db_users使用数据库时,将会经过系统用户认证表进行认证。操作系统
在服务器的mysql上执行.net
mysql> SELECT User, Host, plugin FROM mysql.user;
+------------------+-----------------------+
| User | plugin |
+------------------+-----------------------+
| root | auth_socket |
| mysql.sys | mysql_native_password |
| debian-sys-maint | mysql_native_password |
+------------------+-----------------------+
复制代码
根据查询结果看出,root用户在使用 auth_socket 插件。
解决方法:
能够设置你的root用户使用 mysql_native_password
插件
mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;
复制代码
用你的操做系统用户名代替YOUR_SYSTEM_USER
mysql> USE mysql;
mysql> CREATE USER 'YOUR_SYSTEM_USER'@'localhost' IDENTIFIED BY '';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'YOUR_SYSTEM_USER'@'localhost';
mysql> UPDATE user SET plugin='auth_socket' WHERE User='YOUR_SYSTEM_USER';
mysql> FLUSH PRIVILEGES;
mysql> exit;
复制代码
重启数据库
若是使用了方法2,则须要经过操做系统的用户名来链接数据库。