MySQL 5.7以上 root用户默认密码问题【转】
https://www.yanning.wang/archives/379.html
废话少说一句话系列:
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说什么好……
MySQL 5.7以上 root用户默认密码问题【转】的更多相关文章
- MySQL 5.7以上 root用户默认密码问题
废话少说一句话系列: CentOS系统用yum安装MySQL的朋友,请使用 grep "temporary password" /var/log/mysqld.log 命令,返回结 ...
- ubuntu下root用户默认密码及修改方法
[ubuntu下root用户默认密码及修改方法] 很多朋友用ubuntu,一般都是装完ubuntu系统,马上就修改root密码了,那么root用户的默认密码是多少,当忘记root用户密码时如何找回呢, ...
- mysql5.7 root用户默认密码
1. 查找密码 Mysql 5.7 在自动初始化数据库的时候,会生成root用户的默认密码. 通过 grep "temporary password" /var/log/mysql ...
- MySQL 多实例给root用户创建密码
DB:5.5.14 OS:CentOS 6.3 安装多实例MySQL数据库,安装完成后默认无密码,一次性给所有实例的root账户创建密码: #!/bin/bash for i in {3361..3 ...
- ubuntu root用户 默认密码
ubuntu安装好后,root初始密码(默认密码)不知道,需要设置. 1.先用安装时候的用户登录进入系统 2.输入:sudo passwd 按回车 3.输入新密码,重复输入密码,最后提示passwd ...
- 1、MySql的安装和连接测试并给root用户赋密码
一.mysql数据库的安装 Windows下MySQL的配置 以 MySQL 5.1 免安装版为例, 下载 mysql-noinstall-5.1.69-win32.zip ( 官方下载页: http ...
- mysql数据库的安装和连接测试并给root用户赋密码
一.mysql数据库的安装 Windows下MySQL的配置 以 MySQL 5.1 免安装版为例, 下载 mysql-noinstall-5.1.69-win32.zip ( 官方下载页: http ...
- Bitnami WordPress无法修改MySQL root的默认密码的解决方法?
今天准备修改Bitnami WordPress的MySQL root的默认密码,但是总是出现下面错误: ERROR 1045 (28000): Access denied for user 'root ...
- MySQL 的“root”用户修改密码
MySQL 的“root”用户默认状态是没有密码的,所以在 PHP 中您可以使用 mysql_connect("localhost","root"," ...
随机推荐
- TensorFlow和Keras完成JAFFE人脸表情识别
cut_save_face.py #!/usr/bin/python # coding:utf8 import cv2 import os import numpy as np import csv ...
- Linux下调试.Net core(1):lldb的安装
windows下,我们对于.net程序发生Crash,资源泄露,死锁等问题的分析,有神器windbg,那现在我们的.net core程序运行在linux上时,该怎么进行对对Core Dump文件进行分 ...
- Linux 查看进程之PS命令
要对进程进行检测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程运行状态.Linux 系统中 我们可以使用 ps 命令查看进程. ps 命令介绍 ps(process stat ...
- swagger2的接口文档
以前见过一个swagger2的接口文档,特别好用,好看,对接口中入参描述的很详细:适合用于项目的开发 后来自己做项目的时候,没有找到这个swagger版本 <dependency> < ...
- 【Core】.NET Core 部署在Linux
安装.NET Core SDK 在CentOS上 1.右键打开命令行: 2.为了安装.NET,需要注册微软签名密钥和添加微软相关的支持.这个操作每台机器只能做一次. Add the dotnet p ...
- Redis学习--key的通用操作、移库操作、订阅与事务、持久化和总结
key的通用操作 keys pattern: pattern *表示任意一个多个字符 ?表示任意一个字符 del key1 key2 删除多个key exists keyname 查看是否存在 ren ...
- Web版记账本开发记录(六)
经过今天的学习和实践,终于把这个web版的记账系统给做出来了, 虽然是很简单的一个系统,但是自己花费的时间也着实不少. 今天将大部分功能都实现了,接下来就是完善和美化, 接下来会对不足的地方进行改善, ...
- EL条件判断用法<c:choose>
EL表达式一般不直接用==,!=,>,<,>=,<=之类的表示相等.不等于.大于.小于.大于等于以及小于等于,而是使用字母表示,如下: == eq 等于 != ...
- golang并发(1)介绍
概述 简而言之,所谓并发编程是指在一台处理器上“同时”处理多个任务. 随着硬件的发展,并发程序变得越来越重要.Web服务器会一次处理成千上万的请求.平板电脑和手机app在渲染用户画面同时还会后台执行各 ...
- 正常终止expdp作业
1.先查询expdp对应的job_nameSQL> select * from dba_datapump_jobs; OWNER_NAME JOB_NAME OPERATION JOB_MOD ...