在全新的mysql 5.7安装中设置root密码


11

我正在尝试将mysql安装在服务中CentOS Linux release 7.2.1511。看一下流程安装:

# sudo yum install mysql-server

输出:

Dependencies Resolved

===========================================================================================================================================================================================================
 Package                                                 Arch                                    Version                                         Repository                                           Size
===========================================================================================================================================================================================================
Removing:
 mysql-community-client                                  x86_64                                  5.7.10-1.el7                                    @mysql57-community                                  109 M
 mysql-community-server                                  x86_64                                  5.7.10-1.el7                                    @mysql57-community                                  652 M

Transaction Summary
===========================================================================================================================================================================================================

我运行了mysql damon:

# sudo service mysqld start

检查服务:

# ps -ef|grep mysql
mysql     1371     1  0 22:17 ?        00:00:00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

这使我发疯了。我想第一次设置root密码,所以我做了:

# sudo mysql_secure_installation
// when password is required, I just type "enter key"

但是输出:保护MySQL服务器部署。

输入用户root的密码:错误:用户'root'@'localhost'的访问被拒绝(使用密码:NO)

搜寻错误,在90%的情况下,解决方案是调用mysqld_safe --skip-grant-tables &command:

service mysqld stop
mysqld_safe --skip-grant-tables &
mysql --user=root mysql
update user set Password=PASSWORD('new-password') where user='root';
flush privileges;
exit;

但是mysqld_safe会提示“找不到命令”错误。我也用进行了测试sudo mysqld --skip-grant-tables &,但是它什么也没做。如果您能引导我朝正确的方向设置root密码,我将不胜感激。先感谢您。


需要那些二进制文件在其中PATH。或者您需要完整的路径。(这更多是Linux问题,而不是MySQL问题。)
Rick James

Answers:


18

如果您仅以root用户身份运行mysql命令,则将被授予访问权限而无需输入密码,因为已为root @ localhost启用了套接字身份验证。

本指南具有误导性。

设置密码的唯一方法是切换到本地身份验证,例如:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';

你是救星!发挥魅力!
Zugor

9

在我对解决方案的疯狂研究中,我看了一下/var/log/mysqld.log并找到了这条线:

[注意]将为root @ localhost生成一个临时密码:abc123

看起来mysql 5.7+在安装中生成随机密码,并在该文件中提示。


7

使用以下步骤重置密码:

$ sudo systemctl start mysqld

重置MySQL服务器的root密码。

$sudo grep 'temporary password' /var/log/mysqld.log

输出类似:

10.744785Z 1 [Note] A temporary password is generated for root@localhost: o!5y,oJGALQa

在重置mysql_secure_installation过程中使用以上密码。

$ sudo mysql_secure_installation
Securing the MySQL server deployment.

Enter password for user root: 

您已成功重置MySQL服务器的root密码。使用以下命令检查MySQL服务器是否连接。

$ mysql -u root -p

查看我的文章:在RHEL / Centos 7上安装最新的MySQL 5.7


3

以上所有内容均不适用于我,请注意,我花了一个小时或更长时间,尝试从MYSql网站获取所有关于SO的其他建议,终于使它可以使用:

注意:虽然显示“为root用户输入密码”,但我没有原始密码,因此我只输入了与新密码相同的密码。

注意:仅/var/log/mysql/error.log没有/var/log/mysqld.log

  1. 杀死当前的mysqld pid
  2. 使用sudo / usr / sbin / mysqld运行mysqld&
  3. 运行mysql_secure_installation的/ usr / bin / mysql_secure_installation

    输出

    root @ myServer:〜#/ usr / bin / mysql_secure_installation

    保护MySQL服务器部署。

    输入root用户密码:

    验证密码插件可用于测试密码并提高安全性。它检查密码的强度,并允许用户仅设置足够安全的密码。您要设置“验证密码”插件吗?

    按y | Y表示是,按其他任何键表示否:否将现有密码用作root。更改root的密码?((按y | Y表示是,按其他任何键表示否):y

    新密码:

    重新输入新密码:默认情况下,MySQL安装有一个匿名用户,允许任何人登录MySQL,而无需为其创建用户帐户。这仅用于测试,并使安装过程更流畅。在进入生产环境之前,应先删除它们。

    删除匿名用户?(按y | Y表示是,按其他任何键表示否):y成功。

    通常,仅应允许root从'localhost'连接。这样可以确保某人无法猜测网络中的root密码。

    禁止远程root登录?(按y | Y表示是,按其他任何键表示否):y成功。

    默认情况下,MySQL带有一个名为“ test”的数据库,任何人都可以访问。这也仅用于测试,应在移入生产环境之前将其删除。

    删除测试数据库并访问它?(按y | Y表示是,按其他任何键表示否):y

    • 删除测试数据库...成功。

    • 删除测试数据库上的特权...成功。

    重新加载特权表将确保到目前为止所做的所有更改将立即生效。

    现在重新加载特权表?(按y | Y表示是,按其他任何键表示否):y成功。

    全做完了!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.