На моем сервере 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 kbd> + z kbd>, чтобы остановить его. Я проверил файл журнала в /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 я не могу делать никаких операций, ничего не создавая нового пользователя или изменяя привилегии. Я просто могу просматривать базы данных по умолчанию
, когда я набрал 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-доступ для создания, обновления?
Простое решение - sudo killall mysqld
во время выполнения операции apt-get.
После этого операция apt продолжала работать без каких-либо ошибок (!)
Источник: https://bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug / 1596815
Это не ни из-за какого пользователя 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
и Ваш пароль.
Наконец я получил обходное решение. Вот то, что я сделал
sudo apt purge mysql*
/etc/mysql
/var/lib/mysql, /var/lib/mysql-files, /var/lib/mysql-kering
. 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).
Я искал месяцы для решения проблем с 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)