Как настроить доступ к SQL Server

Доступ к SQL Server настраивается в два слоя. Сначала создается логин на уровне сервера, чтобы пользователь или приложение могли подключиться к экземпляру SQL Server. Затем внутри нужной базы создается пользователь и ему выдаются права

Если настроить только логин, человек может попасть на сервер, но не получить доступ к нужной базе. Если создать только пользователя базы без серверного логина, подключение тоже не заработает

Что нужно проверить перед настройкой

Перед созданием прав уточните четыре вещи:

  • к какому серверу подключаемся
  • какая база нужна пользователю или приложению
  • какой способ входа используется: Windows Authentication или SQL Server Authentication
  • какие действия разрешены: только чтение, чтение и запись, администрирование

Для учебных задач не выдавайте sysadmin. Это слишком широкие права, которые дают полный контроль над сервером

Как создать логин SQL Server

Пример для SQL Server Authentication:

CREATE LOGIN app_reader
WITH PASSWORD = 'StrongPassword_ChangeMe_2026';

После этого логин существует на уровне сервера, но еще не имеет нормальных прав внутри базы

Создадим пользователя в конкретной базе:

USE sales_db;
GO

CREATE USER app_reader
FOR LOGIN app_reader;
GO

Теперь можно выдать роль только для чтения:

ALTER ROLE db_datareader
ADD MEMBER app_reader;

Такой пользователь сможет читать таблицы, но не сможет менять данные

Как выдать доступ на чтение и запись

Если приложению нужно читать и менять данные:

USE sales_db;
GO

ALTER ROLE db_datareader
ADD MEMBER app_user;

ALTER ROLE db_datawriter
ADD MEMBER app_user;

Это простой вариант, но он не всегда самый точный. В рабочих системах лучше выдавать права на конкретные схемы, таблицы или процедуры

Например, доступ только к одной схеме:

GRANT SELECT, INSERT, UPDATE
ON SCHEMA::crm
TO app_user;

Так проще контролировать, что именно может делать приложение

Как включить сетевой доступ

Если подключение идет с другого компьютера, одних прав в базе мало. SQL Server должен принимать сетевые подключения

Проверьте:

  • служба SQL Server запущена
  • протокол TCP/IP включен в SQL Server Configuration Manager
  • указан правильный порт, чаще всего 1433
  • firewall разрешает входящие подключения
  • имя сервера и экземпляра указаны правильно

Для именованного экземпляра строка подключения может выглядеть так:

SERVER-NAME\SQLEXPRESS

Для подключения по порту:

SERVER-NAME,1433

Как проверить доступ

Откройте SSMS и подключитесь под новым пользователем. Затем выполните:

SELECT DB_NAME() AS current_database;

SELECT TOP 5 *
FROM sys.tables;

Если пользователь подключился, но не видит таблицы, проблема в правах внутри базы. Если не подключается вообще, смотрите логин, пароль, режим аутентификации, TCP/IP и firewall

Мини-практика

Сделайте учебного пользователя только для чтения:

CREATE LOGIN demo_reader
WITH PASSWORD = 'DemoReader_ChangeMe_2026';

USE test_db;
GO

CREATE USER demo_reader
FOR LOGIN demo_reader;

ALTER ROLE db_datareader
ADD MEMBER demo_reader;

После проверки попробуйте выполнить SELECT, а затем INSERT. Чтение должно работать, запись должна быть запрещена

Частые ошибки

  • Создать логин, но не создать пользователя внутри базы
  • Выдать права в одной базе, а подключаться к другой
  • Включить SQL-логин, но забыть про смешанный режим аутентификации
  • Открыть порт, но не включить TCP/IP
  • Выдать sysadmin, чтобы быстрее заработало, и получить риск для всей базы
  • Настроить доступ под личной учетной записью вместо отдельного пользователя приложения

Что почитать дальше по SQL

Если нужен общий маршрут по теме, откройте рубрику SQL. Для соседних задач пригодятся эти разборы:

Оцените статью
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x