一尘不染

MySQL中的初始授权问题

mysql

我尝试了多种安装mySql的方法,然后通过全新安装访问数据库。操作系统为RHEL7。使用的软件包为mysql-5.7.7-0.3.rc.el7.x86_64.rpm-
bundle.tar

installation process: 
[root@host1 mysql]# rpm -ivh mysql-community-common-5.7.7-0.3.rc.el7.x86_64.rpm mysql-community-libs-5.7.7-0.3.rc.el7.x86_64.rpm mysql-community-client-5.7.7-0.3.rc.el7.x86_64.rpm mysql-community-server-5.7.7-0.3.rc.el7.x86_64.rpm
 Preparing...                          ################################# [100%]
 Updating / installing...
1:mysql-community-common-5.7.7-0.3.################################# [ 25%]
2:mysql-community-libs-5.7.7-0.3.rc################################# [ 50%]
3:mysql-community-client-5.7.7-0.3.################################# [ 75%]
4:mysql-community-server-5.7.7-0.3.################################# [100%]

然后我启动服务器

 systemctl start mysqld

在此之后,我尝试不使用root用户密码访问服务器。我收到以下错误消息:

[root@host1 mysql]# mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

由于我尚未设置任何密码,因此不太确定为什么会出现此错误。在此之后,我尝试了各种选择,并且可以为我提供帮助。

选项1:要求创建文件并使用init文件更改密码。我尝试使用它,并得到如下输出:

    [root@host1 mysql]# mysqld_safe --init-file=/home/me/mysql-init & [1]28469
    -bash: mysqld_safe: command not found

选项2:使用mysqladmin命令设置密码

[root@host1 mysql]# /usr/bin/mysqladmin -u root password
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'

选项3:使用mysql_secure_installation

[root@host1 mysql]#  mysql_secure_installation

Securing the MySQL server deployment.

Enter password for root user:
Error: Access denied for user 'root'@'localhost' (using password: NO)

选项4:mysql -u root

[root@host1 mysql]# mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

和其他各种。您能否建议这可能是什么问题。


阅读 299

收藏
2020-05-17

共1个答案

一尘不染

对于曾经为此而烦恼的人:

  1. 停止MySql服务器

  2. 创建一个文本文件onetime.sql,其中包含以下内容:

set password for 'root'@'localhost' = PASSWORD('password789');

该文件的路径,以便安全,其他用户无法访问该文件 /home/jason

  1. 使用以下--init-file选项启动MySql服务器:

mysqld_safe --init-file=/home/jason/onetime.sql &

  1. 密码更改后,请稍候。等待不会很久。

  2. 删除该文件… rm /home/jason/onetime.sql

  3. 停止MySql服务器

  4. 以正常方式启动MySql服务器

编辑 这可能是必要的:

一旦MySQL停止,

编辑/etc/my.cnf文件以添加该行

skip-grant-tables

重新启动

使用root用户连接到MySQL。

mysql -u root

登录后,您将看到以下提示:

mysql>

输入以下命令:

mysql> use mysql;
mysql> UPDATE user SET password=PASSWORD("YOUR NEW PASSWORD HERE") WHERE User='root';
mysql> flush privileges;
mysql> quit

现在再次停止MySQL:

服务mysqld停止

如果您编辑了/etc/my.cnf文件,请删除skip-grant-tables行。

现在重新启动MySQL并测试您的新登录名。

服务mysqld重启

mysql -u root -p

2020-05-17