赞
踩
Ubuntu18.04+Mysql5.7。通过以下命令进行了安装:
sudo apt install mysql-server-5.7
结果在安装完成后通过root用户登录时报了上面的问题,其实就是因为安装过程中也没有设置过root用户的登录密码。
找到并打开mysqld.cnf,然后在该配置文件中的[mysqld]标签下最后一行加入skip-grant-tables:
sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf [mysqld] # # * Basic Settings # user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp lc-messages-dir = /usr/share/mysql skip-external-locking character-set-server=utf8 collation-server=utf8_general_ci skip-grant-tables <-- add here
添加了这句话以后,我们就可以不用密码登录就能进入mysql了,在修改保存之后,重启mysql服务:
service mysql restart
在步骤1后,在终端上输入mysql -u -root -p
,提示输入密码时直接回车即可,此时发现你已经进入到mysql了,而后输入以下命令:
use mysql; #然后敲回车
update user set authentication_string=password("你的密码") where user="root"; #然后敲回车
flush privileges; #然后敲回车
重新编辑mysqld.cnf
,将步骤1中添加的skip-grant-tables
语句注释掉。
[mysqld] # # * Basic Settings # user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp lc-messages-dir = /usr/share/mysql skip-external-locking character-set-server=utf8 collation-server=utf8_general_ci # skip-grant-tables <-- add # here
再返回终端重启mysql服务,而后输入mysql -u root -p,密码输入步骤2中设置的密码,回车后应该就可以进入数据库了,如果不行,转到步骤4。
发现在经过步骤3之后,还是会报之前的错误,此时参照步骤3,将注释的那条语句取消注释(删除’#'号),重启mysql后重新进入mysql。而后选择数据库mysql use mysql;
,然后输入select user,plugin from user;
如下图所示:
从图中可以看到在执行了select user, plugin from user;
后,错误原因是因为plugin root的字段是auth_socket,那我们改掉它,替换为mysql_native_password就行了。输入:
update user set authentication_string=password("你的密码"),plugin='mysql_native_password' where user='root';
然后回车执行,再输入select user,plugin from user;
回车运行,发现root用户的字段改成功了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。