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
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)
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.
Stop MySQL:
sudo systemctl stop mysqld
Set the MySQL environment option:
sudo systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"
Start MySQL using the options you just set:
sudo systemctl start mysqld
Login as root
mysql -u root
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
Stop MySQL
sudo systemctl stop mysqld
Unset the MySQL environment option so it starts normally next time:
sudo systemctl unset-environment MYSQLD_OPTS
Start MySQL normally:
sudo systemctl start mysqld
Try to login using your new password:
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
find
is your friend. The password will not be, should not be expressed inmy.cnf
. – Beefsteak