Установка mysql зависла в Ubuntu 16.04 (без прав пользователя root)

На моем сервере Ubuntu 16.04 я пытаюсь установить mysql с помощью следующей команды

sudo apt-get install mysql-server

Каждый раз, когда он застревает с сообщением:

update-alternatives: using /etc/mysql/mysql.cnf to provide /etc/mysql/my.cnf (my.cnf) in auto mode 
Renaming removed key_buffer and myisam-recover options (if present) 
Checking if update is needed.
This installation of MySQL is already upgraded to 5.7.16, use --force if you still need to run mysql_upgrade

Я должен нажать < kbd> Ctrl + z , чтобы остановить его. Я проверил файл журнала в /var/log/mysql/error.log, и последние 10 строк показывают этот результат:

2017-01-18T09:07:30.329930Z 0 [Note] InnoDB: Buffer pool(s) load completed at 170118  9:07:30
2017-01-18T09:07:30.335086Z 0 [Warning] Failed to set up SSL because of the following SSL library error: SSL context is not usable without certificate and private key
2017-01-18T09:07:30.335137Z 0 [Note] Server hostname (bind-address): '127.0.0.1'; port: 3306
2017-01-18T09:07:30.335157Z 0 [Note]   - '127.0.0.1' resolves to '127.0.0.1';
2017-01-18T09:07:30.335216Z 0 [Note] Server socket created on IP: '127.0.0.1'.
2017-01-18T09:07:30.349491Z 0 [Note] Event Scheduler: Loaded 1 event
2017-01-18T09:07:30.349749Z 0 [Note] Execution of init_file '/var/lib/mysql-files/tmp.sJ5rMac6mK' started.
2017-01-18T09:07:30.350543Z 1 [ERROR] 1396  Operation ALTER USER failed for 'root'@'localhost'
2017-01-18T09:07:30.350737Z 0 [Note] Execution of init_file '/var/lib/mysql-files/tmp.sJ5rMac6mK' ended.
2017-01-18T09:07:30.350864Z 0 [Note] mysqld: ready for connections.

После перезагрузки я вошел в mysql с помощью mysql -u root. внутри mysql я не могу делать никаких операций, ничего не создавая нового пользователя или изменяя привилегии. Я просто могу просматривать базы данных по умолчанию

  • information_schema
  • test

, когда я набрал show grants, он показывает мне следующий результат

+--------------------------------------+
| Grants for @localhost                |
+--------------------------------------+
| GRANT USAGE ON *.* TO ''@'localhost' |
+--------------------------------------+

Что довольно странно. Чтобы убедиться в этом, я проверил таблицу user_privileges в information_schema, которая дает мне следующее:

+----------------+---------------+----------------+--------------+
| GRANTEE        | TABLE_CATALOG | PRIVILEGE_TYPE | IS_GRANTABLE |
+----------------+---------------+----------------+--------------+
| ''@'localhost' | def           | USAGE          | NO           |
+----------------+---------------+----------------+--------------+

Как я могу включить root-доступ для создания, обновления?

7
задан 18 January 2017 в 12:16

4 ответа

Простое решение - sudo killall mysqld во время выполнения операции apt-get.

После этого операция apt продолжала работать без каких-либо ошибок (!)

Источник: https://bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug / 1596815

0
ответ дан 18 January 2017 в 12:16

Это не ни из-за какого пользователя root, создается в MySQL. Но я не знаю почему. Попытайтесь ввести 'корневого' пользователя в mysql.user таблица.

Во-первых, остановите mysql сервер.

sudo /etc/init.d/mysql stop 

Запустить MySQL с --skip-grant-tables опция, позвольте попытке сконфигурироваться my.cnf.

sudo vi /etc/mysql/my.cnf

Добавьте следующую строку под [mysqld].

 skip-grant-tables

Запустите сервер MySQL снова.

sudo /etc/init.d/mysql start

Войдите в MySQL

mysql -u root

Введите 'корневого' пользователя со своим паролем требования.

mysql> INSERT INTO mysql.user VALUES ('localhost','root',password('newpassword'),'Y','Y ','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y', 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','' ,'','','',0,0,0,0); 
mysql> INSERT INTO mysql.user VALUES ('127.0.0.1','root',password('newpassword'),'Y','Y ','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y', 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','' ,'','','',0,0,0,0); 

newpassword должно быть изменение в Вашем желаемом пароле. mysql> выход

Удалить skip-grant-tables в my.cnf сконфигурируйтесь для использования аутентификации.

После того сервера MySQL перезапуска нормальным способом.

sudo /etc/init.d/mysql restart

Попытайтесь войти в систему с root и Ваш пароль.

-1
ответ дан 18 January 2017 в 22:16
  • 1
    А-ч, извините, я был неясен о точке: dist-обновление используется для обновлений версии в Debian, не Ubuntu. Тот шаг является лишним в Ubuntu, и действительно может смутить некоторых людей. OP еще не разъяснился, хотят ли они 18.10 или 19.04, таким образом, ответ должен согласиться с каждым. Эти виды вопросов обычно неожиданно возникают, когда OP вводит заклинания что они don' t понимают. – user535733 17 November 2018 в 13:10

Наконец я получил обходное решение. Вот то, что я сделал

  • Удаление mysql использование sudo apt purge mysql*
  • папка Remove /etc/mysql
  • папки Remove /var/lib/mysql, /var/lib/mysql-files, /var/lib/mysql-kering.
  • Перезагрузка
  • Установка mysql использование sudo apt-get install mysql-server

На этот раз mysql установленный успешно без застревания. В то время как установка, это предложило мне пароль root и я обеспечил ту. После установки я вошел в систему с корнем с моим указанным паролем. На этот раз создание нового пользователя, обновление всего хорошо работают. Теперь, вот результат show grants:

+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION        |
+---------------------------------------------------------------------+

, Хотя я все еще не знаю, почему в первый раз это не работало. Я попробовал путем удаления только cnf файла, но это не работало. Когда я удалил все mysql папки в /var/lib затем, это работало. Таким образом, я предполагаю, что был некоторый файл в /var/lib/msyql каталог, который предотвратил для создания любого нового пользователя (даже пользователь root).

7
ответ дан 18 January 2017 в 22:16
  • 1
    Почему dist-обновление? Что Вы ожидаете, что он сделает? – user535733 17 November 2018 в 13:01

Я искал месяцы для решения проблем с mysql_server конфигурацией, которая заморозилась, устанавливая что-либо еще, таким образом имея необходимость уничтожить процессы и вручную запустить mysql. Это также сделало меня, должны запустить MySQL вручную каждый раз, когда я перезапустил компьютер.

я отредактировал/var/lib/dpkg/info/mysql-server-5.7.postinst, и я заметил настраивание), часть ничего не возвращает так, что просто замораживается.

просто необходимо отредактировать тот файл и добавить в конце настраивания), раздел (перед разделом по abort-upgrade|abort-remove|abort-configure) строка, которая говорит "выход 0" вокруг строки 290. Мой теперь походит на это:

    # To avoid downgrades. This has to happen after the database is created, or --initialize will fail
touch $mysql_statedir/debian-5.7.flag

    exit 0   # Corregimos el bug del postinst de mysql

;;
abort-upgrade|abort-remove|abort-configure)
2
ответ дан 7 November 2019 в 13:39

Другие вопросы по тегам:

Похожие вопросы: