Resetting MySQL root password when current password is not known

前端 未结 6 1501
情歌与酒
情歌与酒 2020-12-01 10:58

I have inherited a server that has mysql installed on it. I don\'t have the mysql password for any user, not even root (although I have the linux root password). Plus, I a

6条回答
  •  情深已故
    2020-12-01 11:39

    You need to make sure you are running the command as root by using sudo command.

    I found this instruction for resetting mysql password works well.

    Following this procedure, you will disable access control on the MySQL server. All connexions will have a root access. It is a good thing to unplug your server from the network or at least disable remote access.

    To reset your mysqld password just follow these instructions :

    Stop the mysql demon process using this command :
    
           sudo /etc/init.d/mysql stop
    
    Start the mysqld demon process using the --skip-grant-tables option with this command
    
           sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
    

    Because you are not checking user privs at this point, it's safest to disable networking. In Dapper, /usr/bin/mysqld... did not work. However, mysqld --skip-grant-tables did.

    start the mysql client process using this command
    
           mysql -u root
    
    from the mysql prompt execute this command to be able to change any password
    
           FLUSH PRIVILEGES;
    
    Then reset/update your password
    
           SET PASSWORD FOR root@'localhost' = PASSWORD('password');
    
    If you have a mysql root account that can connect from everywhere, you should also do:
    
           UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
    
    Alternate Method:
    
           USE mysql
           UPDATE user SET Password = PASSWORD('newpwd')
           WHERE Host = 'localhost' AND User = 'root';
    
    And if you have a root account that can access from everywhere:
    
           USE mysql
           UPDATE user SET Password = PASSWORD('newpwd')
           WHERE Host = '%' AND User = 'root';
    

    For either method, once have received a message indicating a successful query (one or more rows affected), flush privileges:

    FLUSH PRIVILEGES;

    Then stop the mysqld process and relaunch it with the classical way:

    sudo /etc/init.d/mysql stop

    sudo /etc/init.d/mysql start

提交回复
热议问题