Подключение к серверу mysql без sudo

Команда:

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

Только пользователю 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

Вам нужно изменить алгоритм. После работы для меня,

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

Ответ 3

сначала войдите в свой mysql с помощью sudo.

то используйте этот код, чтобы изменить значение "плагин" coloumn с "unix_socket" на "mysql_native_password" для пользователя root.

UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket';

FLUSH PRIVILEGES;

наконец, перезапустите службу mysql. что он.

если вы хотите получить дополнительную информацию, отметьте эту ссылку

Ответ 4

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

Подключение к MY-SQL с помощью SUDO

sudo mysql -u root

Удалить текущего пользователя Root из таблицы пользователей

DROP USER 'root'@'localhost';

Создать нового пользователя ROOT (при необходимости вы можете создать другого пользователя)

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

Предоставить разрешения новому пользователю (ROOT)

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

Сбросьте привилегии, чтобы таблицы Grant были немедленно перезагружены. (Зачем нам нужно сбрасывать привилегии?)

FLUSH PRIVILEGES;

Теперь все хорошо. На всякий случай проверьте, создан ли новый пользователь root.

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

Надеюсь, это поможет!

Ответ 5

Вы можете использовать следующий запрос:

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

Этого запроса достаточно.

Ответ 6

В ответе на вопрос, на который вы ответили, вы читаете

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

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

Это, казалось, работало для этого вопроса (тот, который вы сказали, на который вы смотрите), чтобы он мог работать и для вас.

Ответ 7

Я решил эту проблему с помощью следующих команд.

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

Здесь  username = любое имя пользователя, которое вам нравится.

и password = любой пароль, который вам нравится.

Ответ 8

Сообщение об ошибке:

"ОШИБКА 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