スポンサーリンク

【MySQL】ログインできないときにやったこと(その2)

[root@localhost ~]# mysql -u root

ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO)

のようにエラーが出るのでこれの対処をする

こちらこちらを参考にやってみる

[root@localhost ~]# mysqladmin -u root password [パスワード]
mysqladmin: connect to server at ‘localhost’ failed
error: ‘Access denied for user ‘root’@’localhost’ (using password: NO)’

 

ん?

 

[root@localhost ~]# mysqld_safe –skip-grant-tables &
[1] 2923
[root@localhost ~]# -bash: mysqld_safe: command not found
^C
[1]+ Exit 127 mysqld_safe –skip-grant-tables

 

ん???

 

できないw

コマンドすらないって怒られるのはおかしいなと思いググっているとこちらのページがヒット

CentOS 7ではsystemdで管理されているため、mysqld_safeが使用できないよう

systemctlから設定をしてみる

[root@localhost ~]# systemctl stop mysqld
[root@localhost ~]# systemctl set-environment MYSQLD_OPTS=”–skip-grant-tables”
[root@localhost ~]# systemctl start mysqld
[root@localhost ~]# mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.21 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

mysql>

できた!

あとはrootへの権限設定をしていく

まずは現状存在するユーザーを確認

まずはDB切り替え

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

mysql> select user, host, password_expired, password_last_changed, password_lifetime from user;
+—————+———–+——————+———————–+——————-+
| user | host | password_expired | password_last_changed | password_lifetime |
+—————+———–+——————+———————–+——————-+
| root | localhost | Y | 2018-03-01 19:40:42 | NULL |
| mysql.session | localhost | N | 2018-03-01 19:40:42 | NULL |
| mysql.sys | localhost | N | 2018-03-01 19:40:42 | NULL |
+—————+———–+——————+———————–+——————-+
3 rows in set (0.00 sec)

 

こちらを参考にmysqlユーザーのパスワードを設定する

[root@localhost ~]# vi /etc/my.cnf

以下追記

[client]
password=”設定するパスワード”

 

phpMyAdminの画面でユーザー名:root、パスワード:設定したもの

でログインしてみるとうまくいった

 

ただ現状、コマンドライン上ではパスワードを入力しなくてもログインできてしまうのでこれをなんとかしたい…

 

[root@localhost ~]# systemctl set-environment MYSQLD_OPTS=”–skip-grant-tables”

としてしまっていたのでこれを解除する

こちら参考

まずは現状を確認

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select user(), current_user();
+——–+———————————–+
| user() | current_user() |
+——–+———————————–+
| root@ | skip-grants user@skip-grants host |
+——–+———————————–+
1 row in set (0.00 sec)

mysql> CREATE USER ‘sawaryot’@’localhost’ IDENTIFIED BY ‘sawaryot’;
ERROR 1290 (HY000): The MySQL server is running with the –skip-grant-tables option so it cannot execute this statement

 

エラーになることを確認したので修正します
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE USER ‘sawaryot’@’localhost’ IDENTIFIED BY ‘sawaryot’;
Query OK, 0 rows affected (0.03 sec)

[root@localhost ~]# systemctl stop mysqld
[root@localhost ~]# systemctl start mysqld

再起動しないとflush privilegesが反映されてないようだったので注意

 

これでおk

コメント

タイトルとURLをコピーしました