mysqlはインストール時にrootパスワードを要求しません


54

私は使用apt install mysql-serverのUbuntu 16.04にMySQLをインストールするのではなく、インストール時に、それは、rootのパスワードを要求しませんでした。

インストール後、私は得たERROR 1045私としてログインしようとしたときrootmysql_secure_installation同じエラーを投げました。私は、purgedおよびautoremovedが、その後再インストールが、それは動作しません。

どうすれば修正できますか?インストール時に設定しなかった場合、rootパスワードを設定できますか?

これは私のインストールログです。

次の追加パッケージがインストールされます。
  libaio1 mysql-client-5.7 mysql-client-core-5.7 mysql-server-5.7
  mysql-server-core-5.7
推奨パッケージ:
  mailx tinyca
次の新しいパッケージがインストールされます。
  libaio1 mysql-client-5.7 mysql-client-core-5.7 mysql-server mysql-server-5.7
  mysql-server-core-5.7
0はアップグレードされ、6は新しくインストールされ、0は削除され、0はアップグレードされません。
0 B / 17,9 MBのアーカイブを取得する必要があります。
この操作の後、160 MBの追加ディスクスペースが使用されます。
続けたいですか?[Y / n] y
パッケージの事前設定...
以前に選択されていないパッケージlibaio1:amd64を選択します。
(データベースの読み取り中... 227144現在インストールされているファイルとディレクトリ。)
開梱の準備... / libaio1_0.3.110-2_amd64.deb ...
libaio1:amd64(0.3.110-2)の開梱...
以前に未選択のパッケージmysql-client-core-5.7を選択します。
アンパックの準備... / mysql-client-core-5.7_5.7.12-0ubuntu1_amd64.deb ...
mysql-client-core-5.7(5.7.12-0ubuntu1)の展開...
以前に未選択のパッケージmysql-client-5.7を選択します。
アンパックの準備... / mysql-client-5.7_5.7.12-0ubuntu1_amd64.deb ...
mysql-client-5.7(5.7.12-0ubuntu1)の展開...
以前に選択されていないパッケージmysql-server-core-5.7を選択します。
アンパックの準備... / mysql-server-core-5.7_5.7.12-0ubuntu1_amd64.deb ...
mysql-server-core-5.7(5.7.12-0ubuntu1)の解凍...
以前に未選択のパッケージmysql-server-5.7を選択します。
アンパックの準備... / mysql-server-5.7_5.7.12-0ubuntu1_amd64.deb ...
mysql-server-5.7(5.7.12-0ubuntu1)の開梱...
以前に未選択のパッケージmysql-serverを選択します。
アンパックの準備... / mysql-server_5.7.12-0ubuntu1_all.deb ...
mysql-server(5.7.12-0ubuntu1)の展開...
libc-bin(2.23-0ubuntu3)のトリガーの処理...
man-db(2.7.5-1)のトリガーの処理...
systemd(229-4ubuntu4)のトリガーの処理...
ウレアダヘッドのトリガーの処理(0.100.0-19)...
libaio1:amd64(0.3.110-2)のセットアップ...
mysql-client-core-5.7(5.7.12-0ubuntu1)のセットアップ...
mysql-client-5.7(5.7.12-0ubuntu1)のセットアップ...
mysql-server-core-5.7(5.7.12-0ubuntu1)のセットアップ...
mysql-server-5.7(5.7.12-0ubuntu1)のセットアップ...
update-alternatives:/etc/mysql/mysql.cnfを使用して、自動モードで/etc/mysql/my.cnf(my.cnf)を提供します
更新が必要かどうかを確認します。
このMySQLのインストールはすでに5.7.12にアップグレードされており、まだmysql_upgradeを実行する必要がある場合は--forceを使用します
mysql-server(5.7.12-0ubuntu1)のセットアップ...
libc-bin(2.23-0ubuntu3)のトリガーの処理...

回答:


60

グラントテーブルをロードせずにmysqlを起動することにより、現在のパスワードを知らなくてもルートパスワードを回復または設定できます。

$コマンドに注意してください。これは、コマンドを入力するときに表示される端末プロンプトを指定しています。テキストの行であることが示されていますが、実際に入力された端末コマンドです。「mysql>」プレフィックスもプロンプトです。これは、mysqlを相互アクティブに実行するときに表示されるプロンプトです。

これを行うcli(コマンドライン)は次のとおりです
(手順を実行する前に現在のサーバーを必ず停止してください。一度に実行できるサーバーは1つだけです)。

$ sudo mkdir /var/run/mysqld; sudo chown mysql /var/run/mysqld
$ sudo mysqld_safe --skip-grant-tables&

これで、パスワードなしでrootとしてログインし、すべてのコマンドを実行できます。この場合、rootパスワードをrootとして設定します。

$ sudo mysql --user=root mysql

これは、MySQL 5.6以前を使用している場合にmysql内で実行するルートパスワードの設定です。

mysql> update user set Password=PASSWORD('new-password') where user='root';
flush privileges;

MySQL 5.7以降

mysql> update user set authentication_string=PASSWORD('new-password') where user='root';
flush privileges;

そこから、mysqlを終了(実行中のmsqldを強制終了)し、通常どおり起動します。

mysqlサービスの開始と停止に関する注意:

mysqlを停止します。

$ sudo service mysql stop

mysqlを起動します(通常):

$ sudo service mysql start

一時的なmysqlセーフモードセッションを強制終了します。

$ sudo mysqladmin shutdown

11
mysql 5.7.12では、userテーブルにpasswordという名前の列はありません。したがって、次のコマンドは私のために働いた。更新ユーザーセットauthentication_string = PASSWORD( 'new-password')where user = 'root';
コード

7
私はまだ取得していますERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
llamerr

@ ErelSegal-Haleviあなたがすべき2つのことがあります。を実行します$ mysql_upgrade -u root -p。また、RP Singhが指定した上記のコマンドも試してください。
LDジェームズ・

私はまだこのエラーを受け取っています。
ジェイミーハッバー

SET PASSWORD FOR 'root' = PASSWORD('your-password')あなたはmariadb使用している場合
user1036719

37

mysqlUbuntu 16.04でのインストール中にパスワードの入力は求められませんが、インストールが成功した後に次の方法で設定できます。

mysqlのインストールが完了したら、次のコマンドを実行します。

sudo mysql_secure_installation

表示されます:

注:このスクリプトのすべての部分を実行することは、本番使用​​中のすべてのMariaDBサーバーに推奨されます!各ステップを注意深く読んでください!

MariaDBにログインしてセキュリティを確保するには、rootユーザーの現在のパスワードが必要です。 MariaDBをインストールしたばかりで、rootパスワードをまだ設定していない場合、パスワードは空白になるため、ここでEnterキーを押してください。

Enter current password for root (enter for none): (ここでEnterキーを押します)

OK、パスワードを正常に使用しました。次に進みます...

rootパスワードを設定すると、適切な承認なしに誰もMariaDB rootユーザーにログインできなくなります。

Set root password? [Y/n] y   (press 'y' to set new password)
New password: 
Re-enter new password:

パスワードが正常に更新されました!特権テーブルの再読み込み.. ...成功!


Ubuntu 18.04またはmysql-serverバージョン5.7.22の場合、この方法は機能しません

Ubuntu 18.04でルートパスワードを設定するには、最初にLD Jamesの答えの最初の3つのコマンドまたは最初の2つの手順を実行してから実行します。

mysql> alter user 'root'@'localhost' identified by '<password>';

rootユーザーのパスワードが設定されました!

または

18.04でルートパスワードを設定するには、次の手順に従います。

rootユーザーにはパスワードが設定されていないため、空のパスワードでログインするだけです

sudo mysql -u root -p
Enter password: (press enter as no password is set)

その後、簡単にクエリを実行できます

ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';

2
この質問の場合の問題は、ユーザーがを知らないため、あなたが言及されたプロンプトに到達できないことですcurrent password for root
LDジェームズ

@LDJamesはい、そうです。私が実行しmysql_secure_installationたときsudo mysql_secure_installation、私のために働いたとき、エラー:1405について覚えていません mysqlインストールはパスワードを要求しません。私にも同じことが起こりました。そして、here press enterパスワードなしでエンターを押すことを意味します。
デイジー

2
懸念ubuntu 18.04またはdebian 9+のように空白のパスワードで接続せず、rootのパスをリセットした後でも接続を拒否します
chefarov

@chefarov同じ問題に直面し、激しくイライラ
RedactedProfile

確かに、私はまだ同じエラーを
受け取り

16

16.04でのmysql-serverインストール(または5.7インストール?)では、パスワードではなくauth_socketプラグインを介したルートアクセスが許可されているようです。実行sudo mysql -u root(W / OAパスワードNB)は、非rootパスワードの入力を要求されますようにコマンドを実行しているのに対し、あなたのmysqlのコンソールを提供します。

authバックエンドはパスワードのチェックさえ行わないため、パスワードを変更しても大きな違いはないようです。プラグイン変更し、パスワード認証に切り替える方法に関する非常に包括的な記事があります


4
apt install mysql-server18.04にパスワードを指定せずに、新規インストールで確認することができました。症状と解決策は、説明したとおりです。
EricC

一体どうやって接続するの?
ジェイミーハッバー

9

インストール後:

1。

sudo mysql

(はい、ユーザーはパスしません)

2. mysqlコンソールが表示されます:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'my_new_pass';

3。

FLUSH PRIVILEGES;

  1. それでおしまい。次回からは通常どおりコンソールにアクセスできます。

    mysql -u root -p my_new_pass


3
他の多くの答えを試しましたが、これはAmazon EC2で機能しました
ハリスウルレーマン

2
これは、WSL Ubuntu(Linux on Windows)の正解でした。
フェルガルシア

2
これは、google cloudでのubuntu 18.04の新規インストールで機能した唯一の答えです。
Aakash

1
Ubuntu 19.04で私のために働いた。mysql_secure_myinstallationを実行しましたが、rootパスワードが設定されていないようです。
イェンスウェイジメーカー

1
数十のソリューションを試しました。これが最も簡単で唯一機能するものでした。
mreff555

4
  1. デフォルトのユーザーアカウントがあります。

    $ vim /etc/mysql/debian.cnf 
    

    このアカウントを次のように取得します。

    user     = debian-sys-maint
    password = nUZTARYslBsASzpw
    
  2. このアカウントでログインします

    $ mysql -u debian-sys-maint -p
    
  3. ルートパスワードを編集します

    mysql> show databases;
    
    mysql> use mysql;
    
    mysql> update user set authentication_string=PASSWORD("new_password") where user='root';
    
    mysql> update user set plugin="mysql_native_password";
    
    mysql> flush privileges;
    
    mysql> quit;
    
  4. mysqlを再起動します

    $ /etc/init.d/mysql restart;
    

その後、mysql -u root -p前の設定でできます。


私は他のすべての解決策を試しましたが、これが私のために働いた唯一の解決策です。(Linux Mint 19.2)。
エレクトロブッダ

0

主な答えに加えて、あなたがで立ち往生している場合

" mysqld_safe / var / lib / mysqlのデータベースでmysqldデーモンを起動する "

次のコマンドを入力するには、別のターミナルウィンドウを使用する必要があることに注意してください。

$ sudo mysql --user=root mysql

同じウィンドウで実行しようとすると、mysqldセーフモードプロセスがシャットダウンされます。


-1

Ubuntu 18.10でターミナルパスワードプロンプトを使用mysql-serverしてセットアップする方法は次のとおりです。

  1. https://dev.mysql.com/downloads/repo/apt/からMySQL APTリポジトリをダウンロードします
  2. cdダウンロードして実行したディレクトリに移動しますdpkg -i mysql-apt-config_0.8.13-1_all.deb(バージョン番号を確認してください)
  3. プロンプトメニューから最後のオプション「ok」を選択し、次に「ok」を選択します。

  4. mysql-serverおよびmysql-clientを更新してインストールします。

sudo aptアップデート
sudo apt install mysql-server mysql-client
  1. プロンプトにルートパスワードを入力します。
  2. 選択"Use Legacy Authentication Method"あなたは、フレームワーク/新しいサポートしていません(例えばlaravelなど)のアプリケーション実行している場合は"Strong Password Encryption"、まだあなたのフレームワーク/アプリケーションがサポートしているそうでない場合は、"Strong Password Encryption"それを選択します。
  3. rootとしてログインし、機能するかどうかを確認します。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.