MySQL отзывает разрешения для внешних подключений

Мне нужно предоставить удаленному пользователю доступ к базе данных MySQL. Мне также нужно ограничить права доступа к таблицам базы данных MySQL. Текущая база данных содержит ок. 50+ таблиц, поэтому вместо того, чтобы отзывать разрешения по таблицам, я пытаюсь предоставить пользователю доступ без привилегий, а затем добавляю те, которые необходимы. То, что я сделал, кажется, работает, когда:

  1. Я вошел в систему как root (через SSH)
  2. Я вхожу в систему, используя "mysql -u username -p" - введите мой пароль для вновь созданного пользователя.

Эта учетная запись пользователя соблюдает все привилегии, которые я установил. Однако, когда этот пользователь попытался подключиться через свой настольный клиент, он может подключиться, но не может просматривать базу данных. При использовании «use databasename» они получают эту ошибку:

Код ошибки: 1044. Отказано в доступе для пользователя «username» @ «%» к базе данных «database_name»

Не уверен, что это поможет, но я использую Media Temple DV с Plesk. Я сначала добавил пользователя. Затем я подключился по SSH и отозвал ВСЕ привилегии. Затем я добавил привилегии для пользователя и сделал команду «сбросить привилегии». Ничего не работает. Как я уже сказал, если я получаю доступ через командную строку (после входа по SSH с правами root), разрешения соблюдаются, и я могу получить доступ к базе данных, но не удаленно.

Любая помощь будет принята с благодарностью.


person ScoobaSteve    schedule 11.01.2016    source источник
comment
Если у вас есть проверка доступа: выберите User, Host из mysql.user; Там вы увидите, с каких хостов этот пользователь может войти в mysql   -  person xto    schedule 12.01.2016


Ответы (2)


Может быть сетью, к которой разрешено подключаться, является локальный хост, но не сетевой IP-адрес пользователей. И проверьте максимальное количество подключений.

person Lev Bystritskiy    schedule 11.01.2016

Если вы вошли в систему как пользователь root через SSH, а база данных MySQL находится на том же компьютере, то я предполагаю, что если вы запустите:

mysql -u username -p

вы пытаетесь подключиться к MySQL как пользователь 'username'@'localhost'. Если вы хотите подключиться к базе данных MySQL из-за пределов этого сервера, вам необходимо:

  • создайте пользователя, например «имя пользователя» @ «%», который позволяет подключаться к MySQL, используя «имя пользователя» из любого места («%»)
  • разрешить серверу mysql подключаться извне, установив адрес привязки подробнее здесь
person xto    schedule 11.01.2016
comment
Я пробовал это (подключение от имени пользователя с использованием mysql -u username -p), и это работает - когда я подключен по SSH. Это когда я подключаюсь с помощью удаленного клиента - например, MySQL Workbench), когда это не так. Поскольку я использую Plesk, я сначала создаю пользователя в Plesk, затем отменяю все привилегии, а затем вручную добавляю их обратно (например, USAGE, SELECT, INSERT, UPDATE и т. д.). Существуют десятки и десятки таблиц, поэтому сначала нужно отменить все и разрешить конкретный доступ к очень избранным таблицам. - person ScoobaSteve; 12.01.2016
comment
Но дело не в привилегиях. Речь идет о пользователе, с которым вы хотите связаться. Когда вы используете SSH и пытаетесь подключиться к локальному MySQL, вы подключаетесь как «пользователь» @ «localhost». Этому пользователю разрешено подключаться только с локального хоста - с сервера вы подключены по SSH. Если вы хотите подключиться извне, например, через Workbench, вам нужно создать пользователя 'user'@'%' и предоставить этому пользователю все привилегии. - person xto; 12.01.2016
comment
выберите текущий_пользователь(); - вы можете проверить, какой вы пользователь после входа в систему - person xto; 12.01.2016
comment
выберите User, Host из mysql.user; - вы можете проверить, какие пользователи созданы в вашей базе данных, и с какого хоста они могут войти - person xto; 12.01.2016