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

avatar 2020年02月22日18:09:28 0 749 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

发表评论

avatar 登录者:匿名
可以匿名评论或者登录后台评论,评论回复后会有邮件通知

  

已通过评论:0   待审核评论数:0