web-dev-qa-db-ja.com

mysql rootパスワードの問題

Ubuntu 16.04 LTSを使用しています。 mysqlのrootパスワードとは何ですか?入ったら

mysql -u root -p

パスワードを入力するように求められます。パスワードがわからず、パスワードも機能しません。 Mysqlはプリインストールされているため、ルートパスワードは選択しませんでした。もう一度インストールしようとすると、

Sudo apt-get install mysql-server

Mysql-serverはすでに最新バージョンであると言われています(5.7.18-0ubuntu0.16.04.1)

何か助け、ヒント?ありがとう。

2
A. N. Other

2つのオプション:

最初にmysqlをパージします(データベースがまだない場合のみ):

つかいます

apt-get purge mysql-server

パージしてから

apt-get install mysql-server

単純に再インストールします。インストール中にパスワードの入力を求められます。これは最も簡単で最速の方法ですが、phpmyadminなどの一部のプログラムが既存のMySQLに既に接続している場合は問題が発生する可能性があるため、使用することをお勧めします

または、次を実行します。

Sudo service mysql stop 

次に、セーフモードを開始します

Sudo /usr/bin/mysqld_safe --skip-grant-tables & 

ホストとしてlocalhostを選択します(最後のコマンドの後にコマンドプロンプトが表示されないため、メッセージの後にStarting mysqld daemon with databases from [...]と入力して次のコマンドを入力します)

mysql -h localhost

mysqlを選択します

USE mysql 

(新しいパスワードを新しいパスワードに置き換えてください!)タイプ

UPDATE mysql.user 
SET authentication_string=PASSWORD('new_password') 
WHERE user='root' AND Host='localhost'; 

で終了

quit 

そしてMySQLを再起動します

Sudo mysqladmin shutdown 
Sudo service mysql start

編集

このエラーは、MySQLソケットと関係があります。最初に、システム上のすべてのソケットファイルを検索します。

Sudo find / -type s

あなたのソケットはこれに似たものでなければなりません

/var/lib/mysql/mysql.sock

(重要なのは/mysql.sock部分です)

ソケットが開かれている場所を見つけたら、次の行を追加または編集します

/etc/my.cnf 

ソケットファイルへのパスを持つファイル:

プット

[mysqld]

最初に

socket=/path/to/your/socket/

ファイルの最後に。

2.オプションをもう一度試してください。うまくいかない場合は、この説明を続けてください。

これで問題が解決しない場合は、何かがmy.cnfの場所を上書きします。その結果、my.cnfファイルが存在するはずの場所にソケットが見つかりません。次に、mysqlコマンドラインクライアントを実行しようとすると、my.cnfを読み取ってソケットを見つけますが、サーバーが作成した場所から外れるため、見つかりません。したがって、ソケットの場所を気にしない限り、my.cnfを一致するように変更するだけで機能します。

これを修正するには、mysqldプロセスをシャットダウンすることから始めます。

pkill -9 mysqld

これを行った後、/ var/run/mysqld /でpidファイルを探して削除することをお勧めします。

ソケットの権限が、mysqldが実行しているユーザーが読み書きできるようになっていることを確認してください。簡単なテストは、完全に読み書きできるように開いて、それがまだ機能するかどうかを確認することです

chmod 755 /var/run/mysqld/mysqld.sock

ソース:

https://dev.mysql.com/doc/refman/5.7/en/mysql-commands.html

https://ubuntu.flowconsult.at/en/mysql-set-change-reset-root-password/

https://stackoverflow.com/questions/11990708/error-cant-connect-to-local-mysql-server-through-socket-var-run-mysqld-mysq

1
ADDB

新しいmy-sql5.7では、パスワードが空のままの場合、auth_pluginが使用されます。

その場合、Sudo特権でログインします。

$ Sudo mysql -u root -p

ログイン後、これを使用してパスワードを更新できます。

$ ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new-password';

完全な参照チェックについては、 こちら です。

EDIT:これも使用できます(-u rootなし):

$ Sudo mysql
$ ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new-password';
2
Nandesh
1
Bujiraso

UBUNTU 16.04およびMYSQL 5.7.20

ADDBの指示がまったく役に立たなかった。検索後、次のことを発見しました(オプション2の小さな書き直し):

Sudo /etc/init.d/mysql stop
    Sudo mkdir /var/run/mysqld/
    Sudo chown mysql /var/run/mysqld/
    Sudo mysqld_safe --skip-grant-tables &
    mysql -uroot
    use mysql;
    update user set authentication_string=PASSWORD("NEW_PASSWORD_GOES_HERE") where User='root';
    flush privileges;
    quit;
    Sudo /etc/init.d/mysql stop
    Sudo /etc/init.d/mysql start    

参照: http://rricketts.com/reset-root-password-mysql-5-7-ubuntu-16-04-lts/

私の好ましい方法:

Mysqlユーザー「debian-sys-maint」(ルート同等)を使用しました。パスワードは/etc/mysql/debian.cnfにあります。このユーザーとしてMysqlにログインした後、Mysqlユーザーのパスワードを変更します。

USE mysql
SELECT root@localhost;
ALTER USER user IDENTIFIED BY 'auth_string';
ALTER USER 'Name_of_user_to_be_modified'@'Hostname (ie:localhost)' IDENTIFIED BY 'NEW_PASSWORD';
flush privileges;
exit;

リファレンス: https://serverfault.com/questions/9948/what-is-the-debian-sys-maint-mysql-user-and-more

0
arthurjohnston