mysql中的初始授权问题

max*_*mus 4 mysql

我尝试了多种方法来安装mySql,然后在全新安装中访问数据库.操作系统是RHEL 7.使用的包是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%]
Run Code Online (Sandbox Code Playgroud)

然后我启动服务器

 systemctl start mysqld
Run Code Online (Sandbox Code Playgroud)

在此之后,我尝试访问没有root密码的服务器.我得到错误:

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

因为我没有设置任何密码,不太清楚为什么会出现这个错误.在此之后,我尝试了各种选项,mone可以帮助我.

选项1:要求使用init文件创建文件并更改密码.我尝试使用它并输出为:

    [root@host1 mysql]# mysqld_safe --init-file=/home/me/mysql-init & [1]28469
    -bash: mysqld_safe: command not found
Run Code Online (Sandbox Code Playgroud)

选项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)'
Run Code Online (Sandbox Code Playgroud)

选项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)
Run Code Online (Sandbox Code Playgroud)

选项4:mysql -u root

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

和其他各种.你能否说一下这背后可能存在的问题.

Dre*_*rew 6

对于那些曾经发痒的人:

  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 
Run Code Online (Sandbox Code Playgroud)

重启它

使用root用户连接到MySQL.

mysql -u root
Run Code Online (Sandbox Code Playgroud)

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

mysql>
Run Code Online (Sandbox Code Playgroud)

输入以下命令:

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

现在再次停止MySQL:

服务mysqld停止

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

现在重启MySQL并测试新的登录.

service mysqld restart

mysql -u root -p

  • 编辑你的/etc/my.cnf文件,添加"skip-grant-tables"行就可以了.非常感谢 (2认同)

小智 6

"MySQL v 5.7或更高版本在安装后生成一个临时随机密码并存储在mysql错误日志文件中,位于

/var/log/mysqld.log

由CentOS 6/7上的MySQL Yum存储库安装.使用下面的命令来查看密码:

cat /var/log/mysqld.log |grep "temporary password"
Run Code Online (Sandbox Code Playgroud)


小智 5

去做就对了:

cat /var/log/mysqld.log |grep "temporary password"
Run Code Online (Sandbox Code Playgroud)

[注意] root@localhost 生成临时密码:dI&2-&FteI8a

sudo mysql_secure_installation
Securing the MySQL server deployment. Enter password for user root: > type here temporary password
The existing password for the user account root has expired. Please set a new password.
New password: > type here your new password  
Re-enter new password:
Run Code Online (Sandbox Code Playgroud)

归功于用户.pss