If you never set a root
password for MySQL, then the server will
not require a password at all for connecting as root
. It is
recommended to always set a password for each user. See section 4.2.2 How to Make MySQL Secure Against Crackers.
If you have set a root
password, but forgot what it was, you can
set a new password with the following procedure:
mysqld
server by sending a kill
(not kill
-9
) to the mysqld
server. The pid is stored in a `.pid'
file, which is normally in the MySQL database directory:
shell> kill `cat /mysql-data-directory/hostname.pid`You must be either the Unix
root
user or the same user mysqld
runs as to do this.
mysqld
with the --skip-grant-tables
option.
mysqladmin password
command:
shell> mysqladmin -u root password 'mynewpassword'
mysqld
and restart it normally,
or just load the privilege tables with:
shell> mysqladmin -h hostname flush-privileges
Alternatively, you can set the new password using the mysql
client:
mysqld
with the --skip-grant-tables
option as described above.
mysqld
server with:
shell> mysql -u root mysql
mysql
client:
mysql> UPDATE user SET Password=PASSWORD('mynewpassword') -> WHERE User='root'; mysql> FLUSH PRIVILEGES;
mysqld
and restart it normally.
Posted by Peter Flynn on Friday April 11 2003, @5:47am | [Delete] [Edit] |
Users of Red Hat Linux with MySQL installed from the
distribution RPM may find the PID in
/var/run/mysqld/mysqld.pid
Posted by [name withheld] on Sunday April 13 2003, @3:09pm | [Delete] [Edit] |
Please note that this will not work when you start mysql with the safe_mysqld binary. You *have* to run mysqld.
Posted by Tom Hansen on Wednesday April 23 2003, @9:45am | [Delete] [Edit] |
I used the safe_mysqld with the MySQL version 3.23.54 that is installed with Red Hat 8.0 and the --skip-grant-tables option worked just fine for me. I did the following as root:
# /etc/rc.d/init.d/mysqld stop
# /usr/bin/safe_mysqld --skip-grant-tables
# mysql -u root
mysql> use mysql;
mysql> update user set Password = PASSWORD('pass') where User ='root';
Query OK, 2 rows affected (0.02 sec)
Rows matched: 2 Changed: 2 Warnings: 0
mysql> exit
Bye
# /etc/rc.d/init.d/mysqld stop #yes this worked
# /etc/rc.d/init.d/mysqld start
Posted by Paul Ljungqvist on Friday June 20 2003, @10:44am | [Delete] [Edit] |
Sometimes I have not been able to log on as root, then this solution worked for me;
# /etc/rc.d/init.d/mysqld stop
# /usr/bin/safe_mysqld --skip-grant-tables
# mysql -u root
mysql> use mysql;
mysql> update user set Password = PASSWORD('pass') where User ='root';
Query OK, 2 rows affected (0.02 sec)
Rows matched: 2 Changed: 2 Warnings: 0
mysql> exit
Bye
# /etc/rc.d/init.d/mysqld stop #yes this worked
# /etc/rc.d/init.d/mysqld start
Posted by Mike Gifford on Wednesday July 16 2003, @2:08pm | [Delete] [Edit] |
The line:
2. Restart mysqld with the --skip-grant-tables option.
Should be expanded to include a full example, like:
/usr/bin/safe_mysqld --skip-grant-tables
Lots of folks only ever start/stop mysql using
/etc/init.c/mysqld stop|start
and adding --skip-grant-tables won't work.. finding the correct binary file to use to manually start the mysqld wasn't all that intuitive either...
Mike