Debian Lennyのmysqlに現在のログインユーザでアクセス出来るようにする | labunixのラボゆにっくす

labunixのラボゆにっくす

Debian [ Lenny | squueze | kfreebsd ] amd64


■mysqlでroot以外のユーザでログインする

$ mysql -u root -p
$ mysql -u `whoami` -p
Enter password:
ERROR 1045 (28000): Access denied for user 'labunix'@'localhost' (using password: YES)

■現在のユーザをスーパーユーザとして設定する

 参考1:MySQLユーザの追加
 http://phpspot.net/php/pgMySQL%E3%83%A6%E3%83%BC%E3%82%B6%E3%81%AE%E8%BF%BD%E5%8A%A0.html

 参考2:MySQL ユーザの操作(作成、パスワード変更、削除)
 http://sasuke.main.jp/useri.html

$ cat mysql_su_create.sql
GRANT ALL ON *.* TO [username]@"localhost"IDENTIFIED BY "[password]";
FLUSH PRIVILEGES;

$ mysql -u root -p < mysql_su_create.sql > mysql_su_create.tab

■ログイン確認

$ mysql -u username -p

■ユーザ、パスワード確認

$ cat mysql_usercheck.sql
select User,Password from mysql.user

$ mysql -u labunix -p < mysql_usercheck.sql | \
awk '{print $1 "\t" "*0123456789ABCDEFPassword"}' | \
sed s/"User\t.*"/"User\tPassword"/
Enter password:
User Password
root *0123456789ABCDEFPassword
root *0123456789ABCDEFPassword
root *0123456789ABCDEFPassword
debian-sys-maint *0123456789ABCDEFPassword
labunix *0123456789ABCDEFPassword

■テーブルから条件検索で見つけたユーザを削除するだけの場合

$ echo "select User,Host from mysql.user where User='labunix'" | mysql -u labunix -p
Enter password:
User Host
labunix localhost

$ echo "delete from mysql.user where User='labunix'" | mysql -u labunix -p

$ echo "select * from mysql.user where User='labunix'" | mysql -u labunix -p
Enter password:

■DB上に無いはずなのにログインできてしまいます。
 mysqlを再起動してみます。

$ sudo /etc/init.d/mysql restart
$ echo "select * from mysql.user where User='labunix'" | mysql -u labunix -p
Enter password:
ERROR 1045 (28000): Access denied for user 'labunix'@'localhost' (using password: YES)

■mysqlの再起動では無く、権限の削除と再読み込みするのが正しい手順です。

$ password=password
$ echo 'GRANT ALL ON *.* TO labunix@"localhost"IDENTIFIED BY "'$password'";
FLUSH PRIVILEGES;' | mysql -u root -p
Enter password:

$ echo "select User from mysql.user where User='labunix'" | mysql -u root -p
Enter password:
User
labunix

■手順としては、権限を削除、テーブルからユーザを削除、権限の再読み込みです。
 また、作成時に指定したホストを削除時にも指定しないとエラーになりました。

$ echo 'REVOKE ALL ON * . * FROM labunix@"localhost";'"delete from mysql.user where User='labunix';"'FLUSH PRIVILEGES;' | mysql -u root -p

■一気にやらずに順序とおりに行う場合は以下のとおりです。

$ echo 'REVOKE ALL ON * . * FROM labunix@"localhost";' | mysql -u root -p
$ echo "delete from mysql.user where User='labunix';" | mysql -u root -p
$ 'FLUSH PRIVILEGES;' | mysql -u root -p | mysql -u root -p