Переустановка MySQL или сброс его корневого пароля
Я использую MySQL 5.7.19 под LAMP на двух Ubuntu 16.04. Это экземпляр AWS EC2.
Прошло некоторое время с тех пор, как я установил MySQL, и я не использовал его, поэтому, если я переустановлю его, проблем не будет. Ничего, что я ввожу для пароля root не работает
Я старался
sudo /etc/init.d/mysql stop
sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
sudo mysql -u root
В результате
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
Затем я попробовал процедуру, изложенную здесь. Когда я вошел
sudo apt-get install mysql-server
я получил
Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
linux-headers-generic : Depends: linux-headers-4.4.0-119-generic but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
Когда я вхожу
ps -aux | grep mysql
результат
ubuntu 27152 0.0 0.0 12948 984 pts/1 S+ 12:30 0:00 grep --color=auto mysql
Когда я вхожу
mysql -u root -p
я получил
Enter password:
Так что mysql не был удален, и я не могу перенастроить его.
Обновление 1:
Когда я побежал
sudo dpkg-reconfigure mysql-server-5.7
я получил
update-alternatives: warning: forcing reinstallation of alternative
/etc/mysql/mysql.cnf because link group my.cnf is broken
update-alternatives: warning: not replacing /etc/mysql/my.cnf with a link
mysql_upgrade: [ERROR] unknown option '--~'
Upgrade process encountered error and will not continue.
mysql -u root -p
результаты в
Enter password:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
Редактировать 2
Я попробовал следующее с соответствующими результатами.
ubuntu@ip-10-0-1-73:~$ sudo apt autoremove --purge mysql-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
linux-headers-generic : Depends: linux-headers-4.4.0-119-generic but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
ubuntu@ip-10-0-1-73:~$ sudo apt install mysql-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
linux-headers-generic : Depends: linux-headers-4.4.0-119-generic but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
Бег
apt-get -f install
ничего не изменилось.
Изменить 3:
Если я использую
sudo mysql -u root
это берет меня в MySQL. Если я использую ключ -p, он принимает все как пароль. Тем не менее, когда я вхожу
mysql> UPDATE mysql.user SET authentication_string=PASSWORD('newPassword') WHERE User='root';
я получил
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 1
Warning (Code 1681): 'PASSWORD' is deprecated and will be removed in a future release.
Я тогда вошел
FLUSH PRIVILEGES;
и получил следующее сообщение
Query OK, 0 rows affected (0.00 sec)
Затем я ухожу и получаю тот же результат, если не использую sudo
mysql -u root -p
Enter password:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
Изменить 4:
Я попробовал следующее с последующими результатами.
$ sudo apt install linux-headers-4.4.0-119-generic
Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
linux-headers-4.4.0-119-generic : Depends: linux-headers-4.4.0-119 but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
ubuntu@ip-10-0-1-73:~$ sudo apt-get -f install linux-headers-4.4.0-119- generic
Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
linux-headers-4.4.0-119-generic : Depends: linux-headers-4.4.0-119 but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
$ sudo apt-get -f install
Reading package lists... Done
Building dependency tree
Reading state information... Done
Correcting dependencies... Done
The following packages were automatically installed and are no longer required:
linux-headers-4.4.0-64 linux-headers-4.4.0-64-generic linux-headers-4.4.0- 66 linux-headers-4.4.0-66-generic linux-headers-4.4.0-70 linux-headers-4.4.0-70-generic
linux-headers-4.4.0-71 linux-headers-4.4.0-71-generic linux-headers-4.4.0- 72 linux-headers-4.4.0-72-generic linux-headers-4.4.0-75 linux-headers-4.4.0-75- generic
linux-headers-4.4.0-78 linux-headers-4.4.0-78-generic linux-headers-4.4.0- 79 linux-headers-4.4.0-79-generic linux-headers-4.4.0-81 linux-headers-4.4.0-81-generic
linux-headers-4.4.0-83 linux-headers-4.4.0-83-generic linux-headers-4.4.0-87 linux-headers-4.4.0-87-generic linux-headers-4.4.0-89 linux-headers-4.4.0-89-generic
linux-headers-4.4.0-91 linux-headers-4.4.0-91-generic linux-headers-4.4.0-92 linux-headers-4.4.0-92-generic linux-image-4.4.0-112-generic
linux-image-4.4.0-64-generic linux-image-4.4.0-66-generic linux-image- 4.4.0-70-generic linux-image-4.4.0-71-generic linux-image-4.4.0-72-generic
linux-image-4.4.0-75-generic linux-image-4.4.0-78-generic linux-image-4.4.0-79-generic linux-image-4.4.0-81-generic linux-image-4.4.0-83-generic
linux-image-4.4.0-87-generic linux-image-4.4.0-89-generic linux-image-4.4.0-91-generic linux-image-4.4.0-92-generic linux-image-4.4.0-97-generic
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
linux-headers-4.4.0-119 linux-headers-4.4.0-119-generic
The following NEW packages will be installed:
linux-headers-4.4.0-119 linux-headers-4.4.0-119-generic
0 upgraded, 2 newly installed, 0 to remove and 224 not upgraded.
10 not fully installed or removed.
Need to get 0 B/10.8 MB of archives.
After this operation, 78.3 MB of additional disk space will be used.
Do you want to continue? [Y/n]
(Reading database ... 512472 files and directories currently installed.)
Preparing to unpack .../linux-headers-4.4.0-119_4.4.0-119.143_all.deb ...
Unpacking linux-headers-4.4.0-119 (4.4.0-119.143) ...
dpkg: error processing archive /var/cache/apt/archives/linux-headers-4.4.0- 119_4.4.0-119.143_all.deb (--unpack):
unable to create '/usr/src/linux-headers-4.4.0- 119/include/linux/cpufeature.h.dpkg-new' (while processing './usr/src/linux- headers-4.4.0-119/include/linux/cpufeature.h'): No space left on device
No apport report written because the error message indicates a disk full error
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Preparing to unpack .../linux-headers-4.4.0-119-generic_4.4.0- 119.143_amd64.deb ...
Unpacking linux-headers-4.4.0-119-generic (4.4.0-119.143) ...
dpkg: error processing archive /var/cache/apt/archives/linux-headers-4.4.0- 119-generic_4.4.0-119.143_amd64.deb (--unpack):
unable to create '/usr/src/linux-headers-4.4.0-119- generic/include/config/rtc/drv/88pm860x.h.dpkg-new' (while processing './usr/src/linux-headers-4.4.0-119-generic/include/config/rtc/drv/88pm860x.h'): No space left on device
No apport report written because the error message indicates a disk full error
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Errors were encountered while processing:
/var/cache/apt/archives/linux-headers-4.4.0-119_4.4.0-119.143_all.deb
/var/cache/apt/archives/linux-headers-4.4.0-119-generic_4.4.0- 119.143_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
$df
Filesystem 1K-blocks Used Available Use% Mounted on
udev 498080 0 498080 0% /dev
tmpfs 101440 12068 89372 12% /run
/dev/xvda1 8117828 5515716 2166836 72% /
tmpfs 507184 0 507184 0% /dev/shm
tmpfs 5120 0 5120 0% /run/lock
tmpfs 507184 0 507184 0% /sys/fs/cgroup
tmpfs 101444 0 101444 0% /run/user/1000
3 ответа
Наконец-то разобрались.
Сначала найдите и удалите все экземпляры my.cnf.bak. Также удалены /etc/alternatives/my.cnf, /var/lib/dpkg/alternatives/my.cnf и /etc/mysql/conf.d (но их резервное копирование). затем
sudo apt-get remove --purge mysql-\*
sudo apt-get install mysql-server mysql-client
Если вы все еще получаете что-то вроде
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
это часто решается с
sudo service mysql start
Для сброса пароля MySQL, пожалуйста, следуйте процедуре из " B.5.3.2.2 Сброс пароля root: Unix и Unix-подобные системы":
Остановите сервер MySQL, отправив нормальный
kill
(неkill -9
) кmysqld
процесс. Используйте фактический путь к файлу.pid в следующей команде:
kill `cat /mysql-data-directory/host_name.pid`
Используйте обратные кавычки (не кавычки вперед) с командой cat. Это приводит к тому, что вывод команды cat подставляется в команду kill.
Создайте текстовый файл, содержащий оператор назначения пароля в одной строке. Замените пароль на пароль, который вы хотите использовать.
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
Сохраните файл. В этом примере предполагается, что вы называете файл
/home/me/mysql-init
, Файл содержит пароль, поэтому не сохраняйте его там, где его могут прочитать другие пользователи. Если вы не вошли какmysq
l (пользователь, от имени которого работает сервер), убедитесь, что файл имеет разрешения, которые позволяютmysql
читать это.Запустите сервер MySQL с помощью специального
--init-file
опция:
mysqld --init-file=/home/me/mysql-init &
Сервер выполняет содержимое файла, названного
--init-file
опция при запуске, изменение'root'@'localhost'
пароль от аккаунта.Также могут потребоваться другие варианты, в зависимости от того, как вы обычно запускаете свой сервер. Например,
--defaults-fil
может понадобиться раньше--init-file
,После успешного запуска сервера удалите
/home/me/mysql-init
,
Во-первых, давайте исправим вашу проблему с менеджером пакетов. Установите недостающие зависимости, используя:
sudo apt install -f
После этого, если вы уже удалили mysql-server
пожалуйста, переустановите его:
sudo apt install mysql-server
Если вы еще не удалили его или переустановили, но не запросили новый пароль root для MySQL, запустите его (при необходимости изменив номер версии):
sudo dpkg-reconfigure mysql-server-5.7
Это должно было сбросить ваш пароль к настоящему времени. Попробуйте войти снова как root с интерактивной подсказкой пароля:
mysql -u root -p
Если вы все еще получаете ошибку
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
это, скорее всего, означает, что сервер MySQL не работает. Попробуйте начать с:
sudo systemctl restart mysql
После этого, systemctl status mysql
должен сообщить об этом как "активный (работающий)". Попробуйте войти снова.