Підключіться до сервера mysql без sudo


80

Команда:

mysql -u root -p

видає помилку:

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

Але запуск привілеїв sudo працює:

sudo mysql -u root -p

Чи можна позбутися вимоги sudo, оскільки це заважає мені відкрити базу даних в intellij? Я спробував наступне, як у відповіді на це питання Підключитися до локального сервера MySQL без sudo :

sudo chmod -R 755 /var/lib/mysql/

що не допомогло. Вищезазначене запитання має іншу помилку



1
Я вже згадував, що це не працює
Ріяфа Абдул Хамід

Відповіді:


105

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

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON database_name.* TO 'newuser'@'localhost';

тепер newuserможна ввійти без вимоги до sudo:

mysql -u newuser -p

2
Для тих, хто цікавиться, яким може бути пароль, це рядок після IDENTIFIED BY, в даному випадку просто "пароль"
AGoranov,

Просто підкажіть: при підключенні не ставіть пробіл після -pопції. Наприклад, виконайте: mysql -u newuser -ppassword(немає місця!)
Таймур Ахмад,

60

Вам потрібно змінити алгоритм. Слідом за роботою для мене,

mysql > ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
mysql > FLUSH PRIVILEGES;

1
Дякую, це мені допоможе.
kunj

Це мені теж допомогло. Раптово, після перезапуску я почав отримувати доступ Заборонено для користувача root @ localhost. Це рішення допоможе мені зв’язатися з mysql
ahsan_cse2004

37

Ви можете використовувати того самого користувача ROOT або NEW_USER та видалити привілеї SUDO. Нижче на прикладі показано, як видалити підключення за допомогою ROOT, без SUDO.

Підключіться до MY-SQL за допомогою SUDO

sudo mysql -u root

Видаліть поточного кореневого користувача з таблиці користувачів

DROP USER 'root'@'localhost';

Створіть нового користувача ROOT (за потреби можна створити іншого користувача)

CREATE USER 'root'@'%' IDENTIFIED BY '';

Надати дозволи новому користувачеві (ROOT)

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

Змийте привілеї, щоб таблиці Grant негайно перезавантажились. ( Чому нам потрібно змивати привілеї? )

FLUSH PRIVILEGES;

Тепер це все добре. Про всяк випадок перевірте, чи не створено нового кореневого користувача.

SELECT User,Host FROM mysql.user;

+------------------+-----------+
| User             | Host      |
+------------------+-----------+
| root             | %         |
| debian-sys-maint | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
+------------------+-----------+
4 rows in set (0.00 sec)

Вийти з mysql. (Натисніть CTRL + Z). Підключіться до MySQL без SUDO

mysql -u root

Сподіваюся, це допоможе!


1
Працював у мене. Єдиною зміною, яку я вніс, стала заміна '%' на 'localhost'
Девід

30

спочатку увійдіть до свого mysql за допомогою sudo.

потім використовуйте цей код, щоб змінити значення осені "плагіна" з "unix_socket" або "auth_socket" на "mysql_native_password" для кореневого користувача.

UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin IN ('unix_socket', 'auth_socket');

FLUSH PRIVILEGES;

нарешті перезапустіть службу mysql. Це воно.

якщо ви хочете отримати більше інформації, перевірте це посилання

ОНОВЛЕННЯ:

У нових версіях mysql або mariadb ви можете використовувати:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password USING PASSWORD('your-password');
FLUSH PRIVILEGES;

2
Значення плагіна в моєму випадку було 'auth_socket'.
Зубін

sudo service mysql restartперезапустити.
tejasvi88

Це була єдина з усіх перерахованих відповідей, яка працювала для мене (MariaDB v15.1).
Husky

6

Ви можете скористатися наведеним нижче запитом:

GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';

Цього запиту достатньо.


6

Я вирішив цю проблему за допомогою наступних команд.

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON * . * TO 'username'@'localhost';
FLUSH PRIVILEGES;

Тут username= будь-яке ім’я користувача, яке вам подобається.

і password= будь-який вподобаний пароль.


1

Ця відповідь потрібно трохи адаптувати для mariaDB замість mysql.

Перший логін як root із використанням sudo:

$ sudo mysql -uroot

Потім змініть користувача користувача mariadb:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password USING PASSWORD('mypassword');
FLUSH PRIVILEGES;

Відтепер sudo більше не потрібен:

$ mysql -uroot -p

Використана версія: mysql Ver 15.1 Distrib 10.4.13-MariaDB, для osx10.15 (x86_64) з використанням лінії зчитування 5.1


-1

У коментарі до запитання, на яке ви відповіли, на яке ви посилаєтесь, йдеться

Гаразд, просто спробуйте проаналізувати всі каталоги на шляху до файлу сокета, вони повинні мати o + rx і файл sock теж (це не гарна ідея робити його модифікуваним іншими).

Ви також можете спробувати видалити mysql.sock, а потім перезапустити mysqld, файл повинен бути створений демоном з належними привілеями.

Здавалося, це спрацювало для цього питання (того, що ви сказали, що переглядали), тож воно може спрацювати і для вас


Як це зробити? У питанні, яке я поставив, виникла інша помилка
Ріяфа Абдул Хамід

Це не причина голосувати !! : перегляньте файл /etc/mysql/my.cnf і наберіть: # plugin-load-add = auth_socket.so та перезапустіть databse, або прочитайте це, як запустити mysql без пароля liberiangeek.net/2014/10/ reset-root-password-mariadb-centos-7
Бернд Баффен

-5

Повідомлення про помилку:

"ПОМИЛКА 1698 (28000): Заборонено доступ для користувача 'root' @ 'localhost'"

означає, що Сервер не дозволяє підключення для цього користувача, а не те, що mysql не може отримати доступ до сокета.

спробуйте це, щоб вирішити проблему:

Увійдіть у свою БД

sudo mysql -u root -p

то внесіть ці модифікації:

MariaDB []>use mysql;
MariaDB [mysql]>update user set plugin=' ' where User='root';
MariaDB [mysql]>flush privileges;
MariaDB [mysql]>exit

спробуйте увійти ще раз без sudo


3
Я спробував це, і зараз навіть не можу увійти в систему за допомогою sudo. Можливо, доведеться перевстановити mysql :(
Ріяфа Абдул Хамед
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.