После установки пароля root, почему MYSQL все еще позволяет мне входить в систему без пароля из командной строки? Я могу ввести «mysql» в приглашении root unix, он не запрашивает пароль и по-прежнему разрешает мне root-доступ. Я не понимаю, почему «mysql -u root» СЕЙЧАС не запрашивает у меня пароль, который я установил для учетной записи.
Кроме того, я не могу войти в mysql с удаленного компьютера как «root». Я не правильно настроил его ниже? Я получаю сообщение об ошибке: «Хосту ... не разрешено подключаться к этому серверу MySQL. Разве я не настроил его для '%'?
Вот моя таблица пользователей:
mysql> select host,user,password from user;
+-----------+------+-------------------------------------------+
| host | user | password |
+-----------+------+-------------------------------------------+
| localhost | root | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
| % | root | |
| 127.0.0.1 | root | |
| ::1 | root | |
| localhost | | |
| % | | |
+-----------+------+-------------------------------------------+
6 rows in set (0.00 sec)
Что ж, ответ прямо в этой таблице - вам нужно удалить строки «root», в которых нет пароля.
Кроме того, похоже, что вы разрешаете соединения из любого места (?!?!), Когда не используете пользователя или проход. Наверное, плохая идея. Я бы сделал что-то вроде:
mysql> use mysql;
mysql> delete from user where password = "";
Похоже, что пароль установлен на 'root'@'localhost'
запись пользователя, но не на 'root'@'%'
запись; на этом основании будет разрешена аутентификация без пароля.
В целях безопасности пересмотрите возможность предоставления root-доступа из любого места. Если вам это нужно, просто избавьтесь от спецификаций localhost:
drop user 'root'@'localhost';
drop user 'root'@'127.0.0.1';
drop user 'root'@'::1';
И установите пароль для 'root'@'%'
пользователь:
set password for 'root'@'%' = password('passwordhere');
Не забудьте СМЫВАТЬ ПРИВИЛЕГИИ, иначе вы все равно сможете войти без пароля.