Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to change the MySQL root account password on CentOS7?

Tags:

mysql

centos

I have installed mySQL on a Centos7 vm but I have problems logging in with root. I tried logging in without password or tried any default ones (like mysql, admin etc) I looked in the my.cnf file and there's no password. I tried changing the password by stopping the service and restarting it with mysqld_safe --skip-grant-tables & but I get that mysqld_safe:command not found I have no idea what else to do. Any tips/ideas would be greatly appreciated!

like image 816
KeykoYume Avatar asked Nov 03 '15 22:11

KeykoYume


People also ask

Can you change MySQL root password?

In the mysql client, tell the server to reload the grant tables so that account-management statements work: mysql> FLUSH PRIVILEGES; Then change the 'root'@'localhost' account password. Replace the password with the password that you want to use.

What is default MySQL root password CentOS 7?

There is no default password (empty password) for MySQL database server. You need to assign root password after installing MySQL via yum / rpm command. Some admin set the root password same as the server root password.


1 Answers

What version of mySQL are you using? I''m using 5.7.10 and had the same problem with logging on as root

There is 2 issues - why can't I log in as root to start with, and why can I not use 'mysqld_safe` to start mySQL to reset the root password.

I have no answer to setting up the root password during installation, but here's what you do to reset the root password

Edit the initial root password on install can be found by running

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

http://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html


  1. systemd is now used to look after mySQL instead of mysqld_safe (which is why you get the -bash: mysqld_safe: command not found error - it's not installed)

  2. The user table structure has changed.

So to reset the root password, you still start mySQL with --skip-grant-tables options and update the user table, but how you do it has changed.

1. Stop mysql: systemctl stop mysqld  2. Set the mySQL environment option  systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"  3. Start mysql usig the options you just set systemctl start mysqld  4. Login as root mysql -u root  5. Update the root user password with these mysql commands mysql> UPDATE mysql.user SET authentication_string = PASSWORD('MyNewPassword')     -> WHERE User = 'root' AND Host = 'localhost'; mysql> FLUSH PRIVILEGES; mysql> quit  *** Edit *** As mentioned my shokulei in the comments, for 5.7.6 and later, you should use     mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass'; Or you'll get a warning  6. Stop mysql systemctl stop mysqld  7. Unset the mySQL envitroment option so it starts normally next time systemctl unset-environment MYSQLD_OPTS  8. Start mysql normally: systemctl start mysqld  Try to login using your new password: 7. mysql -u root -p 

Reference

As it says at http://dev.mysql.com/doc/refman/5.7/en/mysqld-safe.html,

Note

As of MySQL 5.7.6, for MySQL installation using an RPM distribution, server startup and shutdown is managed by systemd on several Linux platforms. On these platforms, mysqld_safe is no longer installed because it is unnecessary. For more information, see Section 2.5.10, “Managing MySQL Server with systemd”.

Which takes you to http://dev.mysql.com/doc/refman/5.7/en/server-management-using-systemd.html where it mentions the systemctl set-environment MYSQLD_OPTS= towards the bottom of the page.

The password reset commands are at the bottom of http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

like image 165
Kevin Jones Avatar answered Sep 26 '22 11:09

Kevin Jones