■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