Ubuntu安装MySQL和忘记密码解决方案

avatar 2020年2月22日18:09:28 评论 51 views

今天远程帮一个朋友在 Ubuntu 系统上(版本应该是16或18,没问)安装 MySQL,遇到很多坑,记录下。

一、安装MySQL

1、使用 apt-get 安装

sudo apt-get update 
sudo apt-get install mysql-server

中间提示是否下载包,输入Y即可

然后等它下载,默认下载最新版的 MySQL ,也就是 8.0 版本。

不会提示输入密码

 

2、初始化配置,设置密码

sudo mysql_secure_installation

然后下面步骤有点多,注意认真看

#1
VALIDATE PASSWORD PLUGIN can be used to test passwords...
Press y|Y for Yes, any other key for No: N (我的选项)

#2
Please set the password for root here...
New password: (输入密码)
Re-enter new password: (重复输入)

#3
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them...
Remove anonymous users? (Press y|Y for Yes, any other key for No) : N (我的选项)

#4
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network...
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y (我的选项)

#5
By default, MySQL comes with a database named 'test' that
anyone can access...
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : N (我的选项)

#6
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y (我的选项)

 

3、检查MySQL状态

systemctl status mysql.service

 

4、在终端连接

mysql -uroot -p;
输入密码

会出现两种情况下,一个是连接成功;一个是连接失败,要么是密码输错了,要么是加密方式有问题,需要修改,解决办法后面会讲

 

5、连接成功后,设置允许远程访问

默认localhost主机只允许使用终端访问,使用 navicat 访问不了,很奇怪。

可以尝试一下命令解决

GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY "123456";

如果你的 navicat 还是连接不了,如 提示没有权限访问 mysql.sock

可以尝试输入主机地址为 127.0.0.1

我试了,成功解决。

 

二、忘记密码解决方案

忘记密码索性也在这篇里一起写了,因为我这里是有关联的。

输入密码半天连接不了,也不知道是当时设置密码的时候打错了,两次都打错不应该啊。

不管了,还是按照老方法,在配置文件里先加上  skip-grant-tables 来临时关闭密码验证,登进去直接改 root 密码吧。

具体操作如下

1、在 mysqld.cnf 里添加 skip-grant-tables

sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf

当然你也可以使用 vim 命令编辑

在最下面添加

skip-grant-tables

 

2、重启MySQL

sudo service mysql restart

 

3、连接MySQL

mysql

只需要输入一个 mysql 即可,不需要指定用户名

 

4、切换到 mysql 数据库

use mysql;

 

5、查看一下加密方式

select user, plugin from user;

如果是如图 auth_socket 需要将其修改为 mysql_native_password

这就是为什么我改了几次密码,都还是无法连接成功的原因:身份验证的插件是错的。

执行以下命令可以修改

update user set plugin='mysql_native_password' where user='root';
flush privileges;

 

6、修改密码

执以下命令

ALTER user 'root'@'localhost' IDENTIFIED BY '123456'; //123456是新密码

注意 MySQL8.0是不支持 password() 函数的,所以以下命令是无效的

如果你安装的是MySQL5.x可以执行下面命令

update user set authentication_string=password("123456"),plugin='mysql_native_password' where user='root';

 

7、退出

exit;

 

8、去掉 skip-grant-tables

现在我们需要重启了,但是重启前我们可以把之前设置的 skip-grant-tables 去掉了

sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf

注释掉或者去掉

# skip-grant-tables

 

9、重启MySQL

sudo service mysql restart

 

  • 微信
  • 交流学习,有偿服务
  • weinxin
  • 博客/Java交流群
  • 资源分享,问题解决,技术交流。群号:590480292
  • weinxin
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: