Дозволити користувачеві Linux Linux root mysql без пароля


28

На cPanel, коли я зареєстрований як root і введіть "mysql" без імені хоста та пароля, він дає мені прямий доступ до користувача root mysql.

Я хотів би зробити це для одного з моїх серверів, які не є cpanel, де користувач root Linux отримує не менше пароля для входу до користувача root mysql так само, як це робиться на cPanel.

Чи можливо це?

Відповіді:


53

Найпростіший спосіб зробити це - скористатися розділом клієнта файлу ~ / .my.cnf та додати туди облікові дані.

[client]
user=root
password=somepassword
...

добре зробити цей файл читабельним і лише корінцем.


1
Так, це працює, і ось як це робить cPanel
user1066991

9
Мені потрібно вказати на потенційну проблему безпеки .. Вам потрібно бути трохи обережним, щоб ви не редагували це, у /etc/my.cnfякому використовує сервер mysql для завантаження. Якщо ви покладете користувач mysql root у /etc/my.cnfБУДЬ-ЯК, можна використовувати сервер mysql із ВСІМ привілеями у ВСІЙ базі даних без пароля. Йейн вказує на власного користувача оболонки .my.cnfв будинку кореня, що, звичайно, правильно.
Koen van der Rijt

Що робити, якщо немає файлу ~ / .my.cnf? Якщо я створюю його і перезавантажую mysqld, чи повинен я це зробити?
Амальговінус

21

Для mysql 5.7+, якщо ви встановите порожній пароль для початкової установки, mysql автоматично використовуватиме auth_socketяк стратегію. Спроба оновити пароль без зміни стратегії не дасть результату. Ви завжди можете увійти без використання пароля, якщо ваш користувач root.

Рішення Виконайте наступну команду, щоб змінити стратегію аутентифікації та встановити пароль

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY ''

довідка: https://www.percona.com/blog/2016/03/16/change-user-password-in-mysql-5-7-with-plugin-auth_socket/


3
Мені довелося додати порожній рядок наприкінці, щоб він працював:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
kramer65

Інтерстинг @kramer, працює лише в тому випадку, якщо я встановив його як ви ... BY "";. Спасибі!
Хуан Антоніо

Він змінюється passwiord на "ANY_PASSWORD" і не очищає пароль. Щоб очистити та увійти без пароля, встановіть його у порожній рядок.
Фернандо Кош

7

Станом на MySQL 5.6.6, ви можете використовувати mysql_config_editor, щоб створити зашифрований файл, який автоматично входитиме в систему:

mysql_config_editor set --login-path=client --host=localhost --user=root --password

Потім введіть пароль, коли буде запропоновано.

Примітка: якщо у вашому паролі є "#" та, можливо, інші символи, використовуйте одинарні лапки під час введення пароля.


Чи можете ви детальніше розглянути коментар з однією цитатою? Він пропонує вам пароль на терміналі, чи загортаєте ви його в одні лапки
user2299958

Так, я виявив, що ввести його без лапок не вийде, якщо він має спеціальні символи. Тож, коли буде запропоновано, просто введіть "(одна цитата), потім пароль, потім".
Брайан Детерлінг

0

Зробіть файл, що містить лише пароль root mysql, і він може читати лише root.

# ls -l /root/.mysqlpw 
-rw------- 1 root root 7 2013-08-19 13:24 /root/.mysqlpw

Ви можете імпортувати базу даних за допомогою

# mysql -u root -p`cat /root/.mysqlpw ` yourdatabase < databasedump.sql

або підключитися до бази даних і видавати команди mysql

# mysql -u root -p`cat /root/.mysqlpw ` yourdatabase
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 20460
Server version: 5.1.63-0ubuntu0.10.04.1 (Ubuntu)

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| yourdatabase       |
+--------------------+
3 rows in set (0.00 sec)

mysql> show tables;
...

5
Це набагато більше роботи, ніж інша відповідь. І ваш пароль занадто короткий. :)
Майкл Хемптон

8
Не роби цього. Він ставить пароль у командному рядку, який може прочитати кожен ps(1)
camh

Це справді не дуже гарна ідея
Фернандо Кош
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.