7

この問題は、数時間頭を悩ませてきました。以下を使用して、mysqldump を使用してデータベースをダンプしようとしています。

mysqldump --protocol=socket -S /var/run/mysqld/mysqld.sock database`

ただし、私は取得し続けます:

1045: Access denied for user 'root'@'localhost' (using password: NO) when trying to connect

私はローカルホストにいて、ルート ( sudo su ) で実行しています。
Root@localhostは mysql ユーザー テーブルで許可されます。
を使用> mysqlしてすべてのデータベースを表示できますが、mysqldump は機能しません。
root パスワードがわかりません (システム生成)。そのようにmy.conf
にソケットを追加して、mysql サーバーを再起動 しようとしました。

[mysqldump]
socket = /var/run/mysqld/mysqld.sock

どんな助けでも大歓迎です!

4

2 に答える 2

15

ソケットを介して接続している場合でも、ユーザーに提供する必要がありますroot

root@localhostパスワードがない場合は、次のようにします。

mysqldump -uroot --protocol=socket -S /var/run/mysqld/mysqld.sock database

パスワードがある場合root@localhostは、次のようにします。

mysqldump -uroot -p --protocol=socket -S /var/run/mysqld/mysqld.sock database

実行している場合

mysql

指定してログインできます-uroot。ソケットも指定しないでください

mysqldump database

mysqldumpに指定したソケットが

[mysqldump]
socket = /var/run/mysqld/mysqld.sock

[mysqld]ソケットがのセクションでmy.cnfも定義されていることを確認する必要があります

これが存在しない場合

[mysqld]
socket = /var/run/mysqld/mysqld.sock

次に、このクエリを実行します

SHOW VARIABLES LIKE 'socket';

ソケットファイルの名前とパスを確認してください。

システムDBAにカスタムユーザーを追加してもらうことができます

GRANT ALL PRIVILEGES ON *.* TO tyler@localhost;

次に、実行できます

mysqldump -utyler --protocol=socket -S /var/run/mysqld/mysqld.sock database

これは安全ではありません。タイラーにはパスワードが必要です。だから、これを実行します:

SET SQL_LOG_BIN=0;
GRANT ALL PRIVILEGES ON *.* TO tyler@localhost IDENTIFIED BY 'tylerspasssword';

その後、あなたはすることができます

mysqldump -utyler -p --protocol=socket -S /var/run/mysqld/mysqld.sock database

試してみる !!!

于 2013-03-10T04:25:59.727 に答える
2

解決策を見つけました!ソケットは資格情報自体を保持しません。/root/.my.cnf代わりに、構成ファイルに保存されます。mysql私には、コマンドのユーザー名とパスワードしかありませんでした。私もそれに追加[mysqldump]する必要がありました。私の/root/.my.cnfファイルは次のようになります。

[mysql]
user=root
pass=myawesomepass

[mysqldump]
user=root
pass=myawesomepass

于 2013-03-10T06:05:25.243 に答える