Вопрос Проблема с паролем MySQL mysql


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

mysql -u root -p

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

sudo apt-get install mysql-server

В нем говорится, что mysql-server - это уже самая новая версия (5.7.18-0ubuntu0.16.04.1)

Любая помощь, подсказки? Благодарю.


1
2017-07-01 14:05


происхождения


эта ссылка имеет все в ней -> dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html - Akhil Varma


ответы:


Два варианта:

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

использование

apt-get purge mysql-server

для очистки, а затем

apt-get install mysql-server

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

Или выполните следующие действия: остановите использование MySQL-сервера, используя

sudo service mysql stop 

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

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

Выберите localhost как host (после последней команды не будет командной строки, поэтому после сообщения 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' И 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

После этого вы можете захотеть найти файл pid в / 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


0
2017-07-01 17:19



Когда я пытаюсь войти в систему под именем root (шаг 3 варианта 2), он говорит - ERROR 2002 (HY000): не удается подключиться к локальному серверу MySQL через сокет '/var/run/mysqld/mysqld.sock' (2) [1] + Выход 1 - это нормально? - A. N. Other
@ A.N.Друго отредактировал мой ответ немного - ADDB
Я вижу только /run/mysqld/mysqld.sock в списке сокетов с mysql в их имени ... Это немного отличается от того, который вы предлагаете ... Если вы думаете, что все в порядке, я продолжу ваши предложения. Благодарю. - A. N. Other
Все нормально. Я только сказал что-то подобное. - ADDB
Я поместил новую строку в путь /etc/mysql/my.cnf. Затем, после «skip-grant-tables», он говорит: mysqld: [ERROR] Найден вариант без предыдущей группы в файле конфигурации /etc/mysql/my.cnf в строке 23! mysqld: [ERROR] Неустранимая ошибка при обработке по умолчанию. Программа прервана! - есть также файл mysql.cnf.d, который содержит другие .cnf-файлы ... mysqld.cnf mysqld_safe_syslog.cnf - Должен ли я редактировать их все? - A. N. Other


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

В этом случае логин с sudo привилегия.

$ sudo mysql -u root -p

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

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

Для полной проверки refrence Вот,

РЕДАКТИРОВАТЬ: Можно также использовать это (без -u root):

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

2
2017-08-15 15:51



Он также работает без опции -u root он автоматически выбирает root. И вы можете оставить опцию -p вне. Вам просто нужно ввести пароль sudo, пароль для mysql-root - Boba Fit


Для MySQL 5.7 в журналах печатается пароль по умолчанию. Быстрый grep может вернуть его.

grep 'temporary password' /var/log/mysqld.log

Рекомендации: https://www.percona.com/blog/2016/05/18/where-is-the-mysql-5-7-root-password/

https://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html

https://stackoverflow.com/questions/33991228/what-is-the-default-root-pasword-for-mysql-5-7

https://dba.stackexchange.com/questions/127537/setting-root-password-in-fresh-mysql-5-7-installation


1
2017-07-01 14:30



grep: /var/log/mysqld.log: «Нет такого файла или каталога». У меня есть / var / log / mysql, а затем "error.log error.log.2.gz error.log.4.gz error.log.6.gz error.log.1.gz error.log.3.gz error .log.5.gz error.log.7.gz " - A. N. Other
Попробуйте это на /var/log/mysql/error.log. Это просто другое имя журнала. Есть ли какой-нибудь из файлов вокруг ответа? Файл, который вы регистрируетесь, скорее всего находится где-то в файле conf для MySQL, который должен быть где-то вроде «/etc/mysql/mysql.conf.d/mysqld.cnf» - Bujiraso
С «временным паролем» нет, если у меня grep 'password' есть: 'Shutting down plugin' sha256_password 'и' Shutting down plugin 'mysql_native_password', но никакого фактического пароля - A. N. Other
Я бы сделал быструю «zgrep временную» в этом каталоге, и если ничего не получилось, выполните шаги Вот для обхода прав доступа и установки нового корневого пароля. Более подробные инструкции по сбросу в документах MySQL - Bujiraso
Вся информация на самом деле зависит от распределения, и на этом этапе я не понимаю, что мне делать в моем случае. Интересно, должен ли любой, кто хочет попробовать mysql на Linux, пройти все это?!?! - A. N. Other


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» (корневой эквивалент). Пароль можно найти в файле /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
2017-11-12 17:02