Я пытаюсь запустить MySQL на моем локальном хосте. Это никогда не случалось со мной раньше, но после установки sudo apt-get install mysql-server
не запрашивал у меня начальный пароль.
После поиска ответов для «сброса» моего пароля и борьбы с правами доступа к каталогу я нахожусь в этом состоянии:
Решение mysqld_safe:
- После перезагрузки компьютера
mysql -u root -p
спросит у меня пароль, и после того, как я его введу, он пожалуется на ERROR 1698 (28000): Access denied for user 'root'@'localhost'
- Если я вместо этого попробую
mysql -u root
(без пароля), он скажет ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
- Если я запускаю совет, который другие люди опубликовали по поводу сброса пароля через
mysqld_safe --skip-grant-tables
, то я сталкиваюсь с некоторыми икотами по пути:
- Сначала я бегу
sudo service mysql stop
- Тогда
sudo mysql_safe --skip-grant-tables
скажет mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
- Я могу это исправить, если я сделаю
sudo mkdir -p /var/run/mysqld
и sudo chown mysql /var/run/mysqld
- После этого запуск
mysqld_safe
будет выполняться с сообщением Starting mysqld daemon with databases from /var/lib/mysql
и затем зависнет. И Ctrl + C не выводит меня из этого.
- В новом окне терминала теперь я могу подключиться к
mysql -u root
и получить приглашение mysql>
.
- Я могу установить новый пароль с помощью
use mysql; update user set authentication_string=password('0000') where user='root';flush privileges;
, который сообщит мне, что он успешно обновил строку с сообщением Rows matched: 1 Changed: 1 Warnings: 1
- Предупреждение только гласит:
'PASSWORD' is deprecated and will be removed in a future release.
- И после всего этого я вернулся на круги своя: процесс все еще зависает, поэтому я должен перезагрузиться, потому что
killall mysqld_safe
говорит no process found
. После перезагрузки и ввода нового пароля 0000
мне будет отказано в доступе.
Система Linux 4.15.0-48-generic #51-Ubuntu SMP
.
Решение mysqladmin
Если я запускаю mysqladmin -u root password '0000'
(без sudo
), я получаю:
mysqladmin: сбой подключения к серверу на локальном хосте
ошибка: 'Доступ запрещен для пользователя' root '@' localhost ''
Если я запускаю его с sudo
, я получаю:
mysqladmin: [Предупреждение] Использование пароля в интерфейсе командной строки может быть небезопасным.
Предупреждение. Поскольку пароль будет отправлен на сервер в виде простого текста, используйте ssl-соединение для обеспечения безопасности пароля.
Последний не говорит мне ничего относительно того, произошла смена пароля или нет; было ли ему отказано или нет (так как это предупреждение, а не ошибка, я бы предположил, что оно должно пройти), но в любом случае попытка соединения с 0000
по-прежнему говорит «доступ запрещен».
Любые советы о том, как это исправить, приветствуются.