2012-07-25 6 views
32

mysqlに問題がありました。私はこれを実行しようとした:ユーザdebian-sys-maintのアクセスが拒否されました

echo "show databases" | mysql -B -N 

をしかし、私は得た:私はexecしたときに

ERROR 1045 (28000): Access denied for user 'debian-sys-maint'@'localhost' (using password: YES) 

しかし:

/etc/init.d/mysql restart 

私は 'OK' を得ました。

私はパスワードが/etc/mysql/debian.cnfからである

GRANT ALL PRIVILEGES on *.* TO [email protected] IDENTIFIED BY PASSWORD 'your password' WITH GRANT OPTION; FLUSH PRIVILEGES; 

をしました。しかし、それは役に立たなかった。 (もちろん、私はprivをフラッシュしてmysqlを再起動しました)。

答えて

15

問題がある、あなたのGRANT文はIDENTIFIED BY PASSWORD句を使用しており、この場合にはmysqlのパスワードではなく、平文1をハッシュ化され得ることを期待します。

平文のパスワードを入力する場合は、代わりにIDENTIFIED BY 'your password'を使用してください。

87

これは、DebianのMySQLアカウントdebian-sys-maintがステータスのオン/オフ切り替えに使用されているからです。そのユーザーのパスワードは、/etc/mysql/debian.cnfに保存されているパスワードと同じである必要があります。 initスクリプトはもう動作しません(あなたがそれを手動で変更したためなど)、パスワードが一致しない場合

# Automatically generated for Debian scripts. DO NOT TOUCH! 
[client] 
host  = localhost 
user  = debian-sys-maint 
password = <password> 
socket = /var/run/mysqld/mysqld.sock 
[mysql_upgrade] 
host  = localhost 
user  = debian-sys-maint 
password = <password> 
socket = /var/run/mysqld/mysqld.sock 
basedir = /usr 

:ファイルには、次のようになります。ファイルに応じてパスワードを設定する必要があります。だから、

mysql -u root -p 
# Then type MySQL root password 
GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '<password>'; 
+0

私は/etc/mysql/debian.cnfにフィールド[client]と[mysql_upgrade]があります。パスワードはファイル内でもデータベース内でも同じです。 –

+1

はい、このパスはインストールごとに一意であるため、パスワードを更新する必要があります。 たとえば、あるサーバーから別のサーバーにdata_dirを移動すると、パスが –

3

debian-sys-maintユーザを復元する最も簡単な方法は、パッケージmysql-server-5.5を再設定することです。もしあなたがMySQLのrootユーザのパスワードを知っているなら、あなたは/etc/mysql/debian.cnfにユーザとそのパスワードを復元しようとすることができます。

sudo dpkg-reconfigure mysql-server-5.5 

注:MySQLのPIDを止めることができない場合は、ちょうどsudo killall mysqldを実行します。これは、mysql-server-5.5を再設定するために必要です。

+0

と一致しません。 – specializt

+0

@specializt。それは私の問題を解決する。上記の表記に注意してください。 – shgnInc

+0

なぜ私はいくつかの "記法"について "慎重に"すべきですか?それは意味をなさない。 – specializt