个人操做系统是ubuntu:html
个人MySQL版本是:mysql
安装完成后,登陆mysql的时候就出现了以下错误:sql
由于安装的过程当中没让设置密码,可能密码为空,但不管如何都进不去mysql。那么该怎么作呢数据库
在ubuntu的terminal(也即终端)上输入ubuntu
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
进入到配置文件,而后在这个配置文件中的[mysqld]这一块中加入skip-grant-tables这句话。 vim
做用:就是让你能够不用密码登陆进去mysql。安全
保存:wq,退出。输入:service mysql restart,从新启动mysql。 服务器
在终端上输入mysql -u root -p,碰见输入密码的提示直接回车便可,进入mysql网络
而后分别执行下面四句话:socket
1 use mysql; 而后敲回车 2 update user set authentication_string=password("你的密码") where user="root"; 而后敲回车 3 flush privileges; 而后敲回车
4 quit;
从新进入到mysqld.cnf文件中去把刚开始加的skip-grant-tables这条语句给注释掉。
再返回终端输入mysql -u root -p,应该就能够进入数据库了。
若是出现这个问题,仍是须要像上个问题同样,先把MySQL设置成无密码状态,也就是把上个问题中的第三步注释的
skip-grant-tables
这句话在去掉注释,让它从新起效,而且还要重启MySQL服务
service mysql restart
起效后输入下面这两行命令
1、use mysql; 2、select user,plugin from user;
从图中能够看到在执行了select user,plugin from user;后,错误缘由是由于plugin root的字段是auth_socket,那咱们改掉它为下面的mysql_native_password就好了。输入:
update user set authentication_string=password("123456"),plugin='mysql_native_password' where user='root';
而后回车执行如下,再输入select user,plugin from user;回车,咱们能看到root用户的字段改为功了。
最后quit退出。再把 skip-grant-tables这句话注释上
:
这个问题就解决了
问题分析:
一、多是网络链接问题。
解决方案:若是能ping 192.168.100.109,能ping通,则排除此状况。
2. 可能因为192.168.100.109主机上的my.cnf里配置了skip_networking。
若是配置了skip_networking,这就意味着MySQL只能经过本机Socket链接(socket链接也是本地链接的默认方式),放弃对TCP/IP的监听 固然也不让本地程序链接MySQL(Connector/只能经过TCP/IP来链接)。
解决方案:仍是使用命令 sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 进入到mysqld.cnf文件中,若是有skip_networking,注释掉就好了
三、可能因为192.168.100.109主机上的my.cnf里配置了bind_address=127.0.0.1,只容许本地socket链接
解决方案:也是使用命令 sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 进入到mysqld.cnf文件中,若是有bind_address=127.0.0.1,注释掉就好了
四、还有多是用户名和密码输入错误
解决方案:从新输入一下用户名和密码
五、还有多是port端口的问题
解决方案:有可能192.168.100.109的主机上的MySQL port不是默认3306, 这样我远程链接时,没有指定--port,用的是3306, 而192.168.100.109上没有对3306进行监听。
出现access denied的缘由有以下可能:
一、若MySQL已经没有启动,重启MySQL服务器便可
二、若用户的端口号与IP(3306/3307)不一致:
三、要是mysql的配置文件错误,只须要将init文件中止,在重启一下便可
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
四、还有就是密码错误,从新输入密码试试
问题缘由:mysql服务器出于安全考虑,默认只容许本地登陆数据库服务器。
问题解决:登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%",而后重启mysql这样就容许全部的远程机器进行访问了。
mysql -u root -p mysql>use mysql; mysql>update user set host = '%' where user = 'root'; mysql>flush privileges; mysql>select host, user from user; mysql>quit
service mysql restart
这个问题就解决了