前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mysql 5.7以上版本安装后的初始密码

Mysql 5.7以上版本安装后的初始密码

作者头像
用户5760343
发布2022-05-23 15:35:02
2K0
发布2022-05-23 15:35:02
举报
文章被收录于专栏:sktjsktj

~/.msyql_secret

废话少说一句话系列:

CentOS系统用yum安装MySQL的朋友,请使用 grep "temporary password" /var/log/mysqld.log 命令,返回结果最后引号后面的字符串就是root的默认密码。

最近有点小问题,需要在本地虚拟机里搭建一个MySQL服务器.但是按着以前的日志一步步操作,最后总是会卡在MySQL安装完之后的root登陆上。

按照以前,安装完MySQL之后是可以直接用

mysql -uroot

进入MySQL控制台的,结果现在不行了,会提示

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

被拒绝访问了。一开始以为是因为我之前已经设置过CentOS自带的MariaDB的密码,安装MySQL的时候MySQL替换了MariaDB,但继承了MariaDB的密码,然后用命令:

mysql -uroot -p

去带密码登陆,但是试了几个密码都不对。

正巧后来因为手贱犯了点事儿,系统被我玩炸了,重装了CentOS系统。再次安装MySQL的时候还是没有办法登陆进控制台,提示和之前一样。

这就有点棘手了,难不成MySQL现在还有默认密码了?抱着这个怀疑去MySQL官网一查文档,还真是!

在MySQL的这篇名为《Changes in MySQL 5.7.4 (2014-03-31, Milestone 14)》的文档里,有这么一段:

Incompatible Change: MySQL deployments installed using mysql_install_db now are secure by default. The following changes have been implemented as the default deployment characteristics:

The installation process creates only a single root account, 'root'@'localhost', automatically generates a random password for this account, and marks the password expired. The MySQL administrator must connect as root using the random password and use SET PASSWORD to select a new password. (The random password is found in the .mysql_secret file in the home directory of the effective user running the script.)

Installation creates no anonymous-user accounts.

Installation creates no test database.

个人渣翻如下:

不兼容的更改:MySQL的部署安装使用mysql_install_db,现在默认是安全的。下面的更改已被实现并成为默认部署特性:

在安装的过程里,将仅创建一个root账户——'root'@'localhost',同时将自动生成一个随机密码给它,并标记此密码已过期。MySQL管理员必须使用随机密码登陆root账户,并使用SET PASSWORD去设置一个新的密码。(随机密码可以在运行安装脚本的有效用户其主目录中的.mysql_secret文件中找到。

安装时不创建匿名用户账户。

安装时不创建测试数据库。

有关重点我已经有红色加粗字体标出。不过这个是脚本部署的,我当时是直接将MySQL源添加进了系统源里,然后用yum install mysql-community-server命令安装的,所以自然是没有办法在主目录里找到“.mysql_secret”文件。那密码会在哪儿呢?

其实MySQL在运行的时候会有一个日志文件,它存在于/var/log/mysqld.log,我们在安装时生成的随机密码就在这个文件里,我们可以直接用下面这条命令显示出这个文件里的所有内容:

cat /var/log/mysqld.log

这满屏幕密密麻麻的字,看着就晕,如果我说密码已经在上面的截图里了,你能马上找到吗?肯定得花好久,所以我们这里可以用个更方便的命令:

grep "temporary password" /var/log/mysqld.log

怎么样,现在密码是不是很清楚了?被设置为了“m6qVLN8kYQ?d”。

现在就可以用随机密码登陆MySQL控制台了。

现在好不容易进入了控制台,接下来要做的就是修改密码了,毕竟这么一串密码谁都记不住吧?设置新密码的命令是:

SET PASSWORD = PASSWORD('你的新密码');

不过需要注意的是现在MySQL已经强制要求强密码,已经不能再用弱密码比如“123456”了。如果你设置的密码过于简单,会提示错误:

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

写在最后:这个问题其实还是蛮棘手的,因为完全不知道MySQL后来加了初始随机密码的问题,问了几个朋友他们都说自己部署的时候没有这个问题,最后只好去找官方文档。一是文档全英文,二是自己英语渣,再加上相关文档发布的较早,最后花费了好多时间在这上面。总之也是不知道该对MySQL说什么好……

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档