Проблема с паролем root mysql

Я нахожусь на Ubuntu 16.04 LTS. Какой у меня пароль root пользователя mysql? Если я введу

mysql -u root -p

, он попросит меня ввести пароль: я его не знаю, и ни один пароль тоже не будет работать. Mysql был предварительно установлен, поэтому я не выбрал пароль root. Если я попытаюсь установить его снова, с

sudo apt-get install mysql-server

Он говорит, что MySQL-сервер уже является новейшей версией (5.7.18-0ubuntu0.16.04.1)

Любая помощь, советы ? Спасибо.

2
задан 1 July 2017 в 17:12

4 ответа

Две опции:

Сначала производит чистку mysql (только если у Вас уже нет базы данных):

Использовать

apt-get purge mysql-server

произвести чистку и затем

apt-get install mysql-server

просто переустановить его. В то время как установка его должна попросить у Вас пароля. Это - самый легкий и самый быстрый путь, однако он мог прийти к проблемам, если бы некоторые программы как phpmyadmin уже соединились с существующим MySQL, таким образом, я предложу, чтобы Вы использовали

Или сделайте следующее: Остановите использование MySQL Server

sudo service mysql stop 

Затем запустите безопасный режим с

sudo /usr/bin/mysqld_safe --skip-grant-tables & 

Выберите localhost как хост (После того, как последняя команда, там не будет командная строка, поэтому после сообщения Starting mysqld daemon with databases from [...] введите в следующей команде),

mysql -h localhost

выберите mysql с

USE mysql 

(Замените YOURNEWPASSWORD своим новым паролем!) Тип

UPDATE mysql.user 
SET authentication_string=PASSWORD('new_password') 
WHERE user='root' AND host='localhost'; 

Выход с

quit 

И MySQL перезапуска с

sudo mysqladmin shutdown 
sudo service mysql start

Править

Та ошибка имеет некоторое отношение к Вашему сокету MySQL. Сначала Вы хотите найти все файлы сокета в своей системе с:

sudo find / -type s

Ваш сокет должен быть чем-то подобным этому

/var/lib/mysql/mysql.sock

(важный /mysql.sock часть)

После того как Вы находите, где сокет открывается, добавьте или отредактируйте строку к Вашему

/etc/my.cnf 

файл с путем к файлу сокета:

поместить

[mysqld]

в самом начале и

socket=/path/to/your/socket/

в самом конце файла.

Попробуйте 2. опция снова теперь. Если это не работает, продолжают это объяснение.

Если бы это не решает Вашу проблему, что-то переопределяет my.cnf местоположение, и это привело бы к сокету, не находимому, где my.cnf файл указывает, что это должно быть. Затем, когда Вы пытаетесь выполнить mysql клиент командной строки, это считает my.cnf для нахождения сокета, но это не найдет его, так как это отклоняется от того, где сервер создал тот. Так, Если Вы не заботитесь, где сокет находится, просто изменение my.cnf для соответствия должно работать.

Зафиксировать этот запуск с закрытием mysqld процесс

pkill -9 mysqld

После того, как Вы делаете это, Вы могли бы хотеть искать изодромный с предварением файл в/var/run/mysqld/и удалить его

Удостоверьтесь, что полномочия на Вашем сокете таковы, что безотносительно пользователя mysqld работает, как может чтение-запись к нему. Легкий тест должен открыть его до полного чтения-записи и видеть, работает ли это все еще:

chmod 755/var/run/mysqld/mysqld.sock

Источники:

https://dev.mysql.com/doc/refman/5.7/en/mysql-commands.html

https://ubuntu.flowconsult.at/en/mysql-set-change-reset-root-password/

https://stackoverflow.com/questions/11990708/error-cant-connect-to-local-mysql-server-through-socket-var-run-mysqld-mysq

1
ответ дан 2 December 2019 в 02:14
1
ответ дан 2 December 2019 в 02:14

UBUNTU 16.04 и MySQL 5.7.20

Я не нашел инструкции ADDB абсолютно полезными. После поиска я обнаружил следующее (маленькое переписывают для Опции 2):

sudo /etc/init.d/mysql stop
    sudo mkdir /var/run/mysqld/
    sudo chown mysql /var/run/mysqld/
    sudo mysqld_safe --skip-grant-tables &
    mysql -uroot
    use mysql;
    update user set authentication_string=PASSWORD("NEW_PASSWORD_GOES_HERE") where User='root';
    flush privileges;
    quit;
    sudo /etc/init.d/mysql stop
    sudo /etc/init.d/mysql start    

Ссылка: http://rricketts.com/reset-root-password-mysql-5-7-ubuntu-16-04-lts/

Мой предпочтительный метод:

Я использовал пользователя Mysql "debian-sys-maint" (корень equivelant). Пароль может быть найден в/etc/mysql/debian.cnf. После вхождения в Mysql как это пользовательское изменение пароль для любого пользователя Mysql.

USE mysql
SELECT root@localhost;
ALTER USER user IDENTIFIED BY 'auth_string';
ALTER USER 'Name_of_user_to_be_modified'@'Hostname (ie:localhost)' IDENTIFIED BY 'NEW_PASSWORD';
flush privileges;
exit;

Ссылка: https://serverfault.com/questions/9948/what-is-the-debian-sys-maint-mysql-user-and-more

0
ответ дан 2 December 2019 в 02:14

Для нового мой-sql 5.7, если пароль оставляют пустым затем, он использует auth_plugin.

В этом случае вход в систему с sudo полномочие.

$ sudo mysql -u root -p

После входа в систему можно просто использовать это для обновления пароля.

$ ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new-password';

Для полной ссылочной проверки здесь.

Править: Можно также использовать это (без -u root):

$ sudo mysql
$ ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new-password';
2
ответ дан 2 December 2019 в 02:14

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

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