Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Initial authorization issue in mysql

Tags:

mysql

I tried multiple ways to install mySql and then access the database on a fresh installation. OS is RHEL 7. package used is 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%]

then I start the server

 systemctl start mysqld

After this I try to access the server with no password for root. I get error as:

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

As I have not set any password, not very sure why this error comes. After this I tried various options and mone could help me.

option 1 : asks to make a file and change password by using an init file. I tried using that and got output as:

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

Option 2 : set the password using mysqladmin command

[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)'

Option 3 : using 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)

Option 4 : mysql -u root

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

and various others. Can you please suggest what can be issue behind this.

like image 605
maximus Avatar asked Jul 13 '15 21:07

maximus


2 Answers

“MySQL v 5.7 or higher generates a temporary random password after installation and stored that in mysql error log file, located at

/var/log/mysqld.log

for an installation by the MySQL Yum repository on CentOS 6/7. use below command to see the password:

cat /var/log/mysqld.log |grep "temporary password"
like image 68
Dumb Avatar answered Oct 07 '22 22:10

Dumb


For those ever in a pickle over this:

  1. Stop MySql server

  2. Create a text file onetime.sql that contains something like:

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

Path that file so it is safe and other users can't get to it, perhaps /home/jason

  1. Start MySql server with --init-file option:

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

  1. Wait happily while password is changed. Wait won't be long.

  2. delete that file ... rm /home/jason/onetime.sql

  3. Stop MySql server

  4. Start MySql server normal way

Edit this may be necessary :

Once MySQL has stopped,

edit your /etc/my.cnf file to add the line

skip-grant-tables 

restart it

Connect to MySQL using the root user.

mysql -u root

Once logged in, you should see the following prompt:

mysql>

Enter the following commands:

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

Now stop MySQL again:

service mysqld stop

If you edited your /etc/my.cnf file, delete the skip-grant-tables line.

Now restart MySQL and test your new login.

service mysqld restart

mysql -u root -p

like image 28
Drew Avatar answered Oct 07 '22 20:10

Drew