sql >> データベース >  >> RDS >> Mysql

MySQLのルートパスワードをリセットする

    このチュートリアルでは、ユーザーがパスワードを忘れた場合にMySQLサーバーのルートパスワードをリセットまたは変更する手順を説明します。これは、MySQLサーバーを停止および開始するためのシステムへのアクセス権があることを前提としています。このチュートリアルは、 MySQL 8.0に固有のものです。 以上ですが、 MySQL 5.7を含む古いバージョンのMySQLではそのままで動作するはずです。 。ルートパスワードは、以下の2つの方法でリセットできます。

    メモ :MySQLチュートリアル(UbuntuにMySQL 8をインストールする方法、UbuntuからMySQLを完全に削除する方法、MySQLを使用した基本的なSQLクエリを学ぶ方法)に従うこともできます。

    パスワードの更新

    MySQLのルートパスワードをすでに知っている場合は、簡単に更新できます。以下に示すコマンドを使用して実行できます。 ALTER コマンドはMySQL5.7 で動作するため、推奨されるコマンドです。 およびMySQL8 、ただし、どのコマンドにも従うことができます。

    # Login to MySQL
    mysql -uroot -p
    # OR
    mysql -u root -p

    # MySQL - 5.7.5 and earlier
    UPDATE mysql.user SET password=PASSWORD('password') WHERE user='root';

    # MySQL - 5.7.6 and newer
    UPDATE mysql.user SET authentication_string=PASSWORD("password") where user='root';
    # OR
    SET PASSWORD FOR 'root'@'localhost' = PASSWORD("password");

    # MySQL - 5.7, 8
    ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';
    # OR
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<password>';

    # MySQL - 8
    ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '<password>';

    # Flush
    FLUSH PRIVILEGES;

    # Disconnect
    quit;

    ルートパスワードを忘れた場合は、プロセスAのいずれかに従うことができます。 またはプロセスB 下記のとおり。

    プロセスA-安全

    このプロセスでは、MySQLサーバーを停止および起動して、initスクリプトを使用してルートパスワードを変更します。

    ステップ1-サーバーを停止します

    このプロセスの最初のステップとして、サーバーを停止する必要があります。以下に示すコマンドを使用して実行できます。

    # Using init
    sudo /etc/init.d/mysqld stop
    # OR
    sudo /etc/init.d/mysql stop

    # Using service
    sudo service mysql stop

    # Using systemd
    sudo systemctl stop mysqld.service
    # OR
    sudo systemctl stop mysql

    ステップ2-初期化ファイルを作成する

    次に、initファイルを作成し、以下に示すようにルートパスワードを更新するコマンドを追加します。

    # Create Init File - Use your preferred editor
    sudo nano <path to init file>init-file.txt

    # Add the query to update password

    # MySQL - 5.7, 8
    ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';
    # OR
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<password>';

    # MySQL - 8
    ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '<password>';

    ステップ3-MySQLサーバーを起動します

    次に、以下に示すように、initファイルを使用してMySQLサーバーを起動します。

    # Start the server
    sudo mysqld --init-file=<path to init file>init-file.txt &
    # OR
    sudo mysqld_safe --init-file=<path to init file>init-file.txt &
    へのパス

    サーバーのインストールによっては、多数のエラーがスローされる場合があります。

    メッセージが表示されるとエラーが発生する場合があります-mysqld_safeDirectory'/ var / run / mysqld 'UNIXソケットファイルの場合しないでください 存在します mysqldを作成する必要があります ディレクトリを作成し、 mysqlを作成します 以下に示すコマンドを使用して所有者として。

    # Stop the server

    # Make directory
    sudo mkdir -p /var/run/mysqld

    # Change owner
    sudo chown mysql:mysql /var/run/mysqld

    # Start with init file
    sudo mysqld_safe --init-file=<path to init file>init-file.txt &

    「エラー2002(HY000):ソケットを介してローカルのMySQLサーバーに接続できません」というメッセージが表示される場合があります。 '/ var / run / mysqld / mysqld .sock' 。このような場合は、以下のコマンドに従って解決してください。

    # Start MySQL Server normally - Ubuntu
    sudo service mysql start

    # Navigate to sock directory
    cd /var/run

    # Take backup - sock
    sudo cp -rp ./mysqld ./mysqld.bak

    # Stop the server normally - Ubuntu
    sudo service mysql stop

    # Restore the sock
    sudo mv ./mysqld.bak ./mysqld

    # Start MySQL in unsafe mode
    sudo mysqld_safe --skip-grant-tables &

    ステップ4-MySQLサーバーを停止して起動します

    次に、以下に示す通常のコマンドを使用してMySQLサーバーを停止および起動します。

    # Using init
    sudo /etc/init.d/mysqld stop
    sudo /etc/init.d/mysqld start
    # OR
    sudo /etc/init.d/mysql stop
    sudo /etc/init.d/mysql start

    # Using service
    sudo service mysql stop
    sudo service mysql start

    # Using systemd
    sudo systemctl stop mysqld.service
    sudo systemctl start mysqld.service
    # OR
    sudo systemctl stop mysql
    sudo systemctl start mysql

    必要に応じて、既存のプロセスを終了します。上記のコマンドがサーバーの停止と開始に機能しない場合にのみ使用してください。

    # Find the processes
    ps aux | grep mysqld
    ps aux | grep mysql

    # Kill the processes
    sudo killall mysqld
    sudo killall mysql

    ステップ5-パスワードのテスト

    最後に、以下に示すコマンドを使用して新しいパスワードをテストします。

    # Test new password
    mysql -u root -p

    新しいパスワードをテストした後は、必ずinitファイルを削除してください。うまくいかない場合は、プロセスBに従うことができます 。

    プロセスB-安全性が低い

    このプロセスでは、ログインにパスワードを必要とせずにMySQLサーバーを停止してから起動します。

    ステップ1-サーバーを停止します

    このプロセスを完了するための最初のステップとして、現在実行中のMySQLサーバーを停止する必要があります。以下に示すコマンドを使用して実行できます。

    # Using init
    sudo /etc/init.d/mysqld stop
    # OR
    sudo /etc/init.d/mysql stop

    # Using service
    sudo service mysql stop

    # Using systemd
    sudo systemctl stop mysqld.service
    # OR
    sudo systemctl stop mysql

    ステップ2-パスワードなしでMySQLを起動する

    次に、以下に示すコマンドを使用して、パスワードを無効にしてMySQLサーバーを起動します。必ずアンパサンドを追加してください このコマンドの最後に(&)。また、-skip-networking も有効になります リモート接続を防ぐために自動的に。

    # Start without password
    sudo mysqld_safe --skip-grant-tables &

    メッセージが表示されるとエラーが発生する場合があります-mysqld_safeDirectory'/ var / run / mysqld 'UNIXソケットファイルの場合しないでください 存在します mysqldを作成する必要があります ディレクトリを作成し、 mysqlを作成します 以下に示すコマンドを使用して所有者として。

    # Stop the server

    # Make directory
    sudo mkdir -p /var/run/mysqld

    # Change owner
    sudo chown mysql:mysql /var/run/mysqld

    # Start without password
    sudo mysqld_safe --skip-grant-tables &

    「エラー2002(HY000):ソケットを介してローカルのMySQLサーバーに接続できません」というメッセージが表示される場合があります。 '/ var / run / mysqld / mysqld .sock' 。このようなケース 、Ubuntuについては、以下のコマンドに従って解決してください。

    # Start MySQL Server
    sudo service mysql start

    # Navigate to sock directory
    cd /var/run

    # Tack backup - sock
    sudo cp -rp ./mysqld ./mysqld.bak

    # Stop the server
    sudo service mysql stop

    # Restore the sock
    sudo mv ./mysqld.bak ./mysqld

    # Start MySQL in unsafe mode
    sudo mysqld_safe --skip-grant-tables &

    ステップ3-MySQLに接続する

    次に、別のターミナルを開くか、別のシェルを介してサーバーに接続して、クライアントに接続します。

    # Connect Directly
    mysql

    # Connect as Root
    mysql -uroot
    # OR
    mysql -u root

    ステップ4-パスワードを変更する

    この手順では、以下に示すコマンドを使用してrootパスワードを変更します。 パスワードの更新のセクションを参照することもできます このチュートリアルの一部で、他のコマンドを使用してパスワードを変更します。

    # Change Password

    # MySQL - 5.7, 8
    ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';
    # OR
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<password>';

    # MySQL - 8
    ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '<password>';

    # Flush
    FLUSH PRIVILEGES;

    # Disconnect
    quit;

    ステップ5-MySQLサーバーを停止して起動します

    次に、以下に示す通常のコマンドを使用してMySQLサーバーを停止および起動します。

    # Using init
    sudo /etc/init.d/mysqld stop
    sudo /etc/init.d/mysqld start
    # OR
    sudo /etc/init.d/mysql stop
    sudo /etc/init.d/mysql start

    # Using service
    sudo service mysql stop
    sudo service mysql start

    # Using systemd
    sudo systemctl stop mysqld.service
    sudo systemctl start mysqld.service
    # OR
    sudo systemctl stop mysql
    sudo systemctl start mysql

    必要に応じて、既存のプロセスを終了します。上記のコマンドがサーバーの停止と開始に機能しない場合にのみ使用してください。

    # Find the processes
    ps aux | grep mysqld
    ps aux | grep mysql

    # Kill the processes
    sudo killall mysqld
    sudo killall mysql

    ステップ6-パスワードのテスト

    最後に、以下に示すコマンドを使用して新しいパスワードをテストします。

    # Test new password
    mysql -u root -p

    概要

    これは、パスワードを忘れた場合に、rootユーザーまたは他のユーザーのパスワードをリセットまたは変更する方法です。


    1. 構造にアクセスして、refcursorの列リスト、データ型を取得するにはどうすればよいですか?

    2. 非常に大きなテーブルでの(列ストア)圧縮の楽しみ–パート1

    3. FROM句で更新対象のテーブルを指定することはできません

    4. SQLServerのデフォルトの制約とは-SQLServer/TSQLチュートリアルパート90