Увімкнути без паролів доступ до MySQL


15

Як я можу видалити свій пароль для MySQL? Я не хочу мати пароль для підключення до бази даних. На моєму сервері працює Ubuntu.


Як цікаво, чому ви не хочете пароль?
Джон Гарденєр

Для прикладу я стикаюся з помилками, коли запускаю "dpkg-переконфігурувати phpmyadmin". Він зупиняється з помилкою 1045 з відхиленням доступу root @ localhost "пароль: немає", що закінчується.
Лацек

Відповіді:


29

Особисто я вважаю, що замість цього краще встановити пароль і зберегти його в /root/.my.cnf:

Спочатку:

mysqladmin -u root password 'asdfghjkl'

Потім відредагуйте файл .my.cnf кореня:

[client]
password = asdfghjkl

Переконайтесь, що chmod 0600 .my.cnf.

Тепер у вас є пароль, але вас більше не вимагає. Встановлення мого сервера MySQL за замовчуванням - це абсолютно випадковий унікальний пароль для кожного сервера MySQL, збережений у такому файлі .my.cnf.


1
Я повністю погоджуюся з налаштуванням вашого оточення для автоматичного підтвердження автентичності від вас та видалення пароля.
Зоредаче

2
Можливо, вам знадобляться цитати навколо цього пароля в .my.cnf. Без мене це не вийшло.
користувач67641

1
@ user67641: Це може залежати від версії та того, що у вас в паролі ... Мої - це всі довгі випадкові рядки буквено-цифрових знаків (немає спеціальних символів) і не потребують лапок.
freiheit

2
Якщо вам потрібно створити /root/.my.cnf, варто чітко встановити на нього 0600 дозволів, щоб бути впевненим, що жоден інший користувач не може прослуховувати. Здебільшого звичайні користувачі не можуть спуститися в / root, але додаткова параноїя майже завжди є гарантованою.
Дейл Андерсон

Відсутній mv ./+%Y%m%d. $ Db.sql $ OUTPUT` між туздИшпром і Gzip
Сиддхарт

9

Якщо у вас встановлений пароль для MySQL, дотримуйтесь інструкцій у розділі Відновити MySQL root Password , а потім встановіть свій пароль на нуль:

Для 5.7.6 та пізніших версій

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass'

Для 5.7.5 і раніше

update user set password=PASSWORD("") where User='root';

* для вступу в силу потрібен перезапуск БД (див. інструкції за посиланням).

sudo service mysql restart

у такому випадку не забувайте "розмивати привілеї";
Марко Рамос

@meyosef - будь-ласка, позначте відповідь як відповідь, якщо вона вирішила вашу проблему (натисніть зелену галочку під кількістю голосів).
jneves

Я думав, що можу використовувати порожній пароль лише для Unix socket, а не циклічного зворотного зв'язку, але це неможливо. unix_socketПлагін робить трохи іншу річ.
басейн

9

Так, менше паролів може бути хорошою справою. Але не просто відкривайте базу даних для всіх.

через unix_socket:

grant usage on *.* to 'root'@'localhost' identified via unix_socket;

Це дає вам бездоступний доступ до mysql для локально зареєстрованого користувача root. Btw. це за замовчуванням в останніх випусках ubuntu / debian.

some_user@box: mysql -u root  # denied
root@box: mysql               # good
some_user@box: sudo mysql     # good, if "some_user" has sudo rights.

Пояснювальні слайди: https://www.slideshare.net/ottokekalainen/less-passwords-more-security-unix-socket-authentication-and-other-mariadb-hardening-tips .


2
Ласкаво просимо до SF! Прекрасна перша відповідь: чіткий, хороший підсумок, посилання для подальшого вивчення, і це щось додає до існуючого корпусу відповідей. Я радий бути вашим першим заявою, і я сподіваюся, що ви залишитесь, щоб написати більше відповідей, як ця.
MadHatter

Слайди добре, але це фактична документація: mariadb.com/kb/uk/library/authentication-plugin-unix-socket
JonnyJD

5

Ви також можете зробити:

grant all privileges on *.* to 'root'@'localhost' identified by '';

1

Я майже впевнений, що за замовчуванням немає пароля, якщо ваш адміністратор користувач та отримує доступ до нього локально. Ви знаходите щось інше, ніж це?

Це працює?

#> mysqladmin -u root password ''
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.