ИТ База знаний
Курс по Asterisk
Полезно
— Узнать IP — адрес компьютера в интернете
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Калькулятор инсталляции IP — АТС Asterisk
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Популярное и похожее
15 примеров команды PING для диагностики сети
Руководство по команде grep в Linux
15 примеров CURL в Linux
Как запустить Bash скрипт в Linux
Руководство администратора Linux по устранению неполадок и отладке
Мониторинг пропускной способности и скорости сети в Linux
15 примеров CURL в Linux
Grandstream GXP2200
Еженедельный дайджест
Права доступа к MySQL через Linux
Прямо из консоли
3 минуты чтения
Не все любят управлять MySQL через Linux. Management Studio – говорили они. CLI – говорим мы. Бро, эта статья про то, как дать права доступа (permissions) учетным записям в Linux – среде.
Логинимся
Подключаемся к своему серверу по SSH. В командной строке вводим:
Хоп – и мы уже в режиме управления MySQL:
Вообще, эта статья про права доступа. Но на всякий случай вот тебе синтаксис команды, которая позволит создать нового пользователя с паролем в MySQL:
А теперь права
Друже, синтаксис команды, которая даст нужные тебе права крайне простой. Вот он:
Разберемся слева на право:
- права — могут быть следующие:
- ALL – дает полный доступ к базе данных. Кстати, если база данных не определена в команде, то даст полный доступ ко всему в MySQL (ох не надо так);
- CREATE – позволяет пользователю создавать базы данных и таблицы;
- DELETE – дает право пользователю удалять строки из таблиц;
- DROP – дает право удалять базы данных и таблица целиком (ну, так тоже не надо);
- EXECUTE – дает право пользователю выполнять хранимые процедуры;
- GRANT OPTION – с этой опцией юзер сможет давать права (или удалять) другим пользователям;
- INSERT – дает право хранить молчанию и все что он скажет будет.. Ладно, это просто право на добавление новых строк в таблицу;
- SELECT – самое распространенное право – парсить (извлекать) данные из SQL для чтения;
- SHOW DATABASES — этому пользователю можно будет смотреть на список баз данных;
- UPDATE – дает право пользователю изменять текущие строки в таблице;
- база_данных собственно, база данных, внутри которой живет ваша таблица;
- таблица — сама таблица. Табличка, table, le tableau;
- логин — имя пользователя вашего юзверя;
Все просто. Пробежимся по примерам.
Пример №1
Давайте дадим права юзеру example, с помощью которых он сможет создавать любые БД и таблицы:
Использование звездочки (*) – это как маска, под которое попадает все.
Пример №2
Дадим пользователю example права на удаление любых таблиц в заранее обозначенной базе данных, которая называется easybro
Как видишь, мы юзаем команду DROP. Кстати, лучшая практика после внесения изменения сделать небольшую перезагрузку прав командой:
Как посмотреть права определенного пользователя в MySQL
Посмотреть права очень просто. Опять же, на примере нашего юзера example:
Было полезно?
Почему?
😪 Мы тщательно прорабатываем каждый фидбек и отвечаем по итогам анализа. Напишите, пожалуйста, как мы сможем улучшить эту статью.
😍 Полезные IT – статьи от экспертов раз в неделю у вас в почте. Укажите свою дату рождения и мы не забудем поздравить вас.
Источник
Как изменить (сбросить) root пароль в MySQL
Довольно часто происходит такая ситуация, что пароль для учетной записи root в MySQL необходимо восстановить, поменять или сбросить. Хорошо, если он известен, но бывают случаи, когда пароль был утерян или неизвестен с самого начала. В данной статье пойдет речь о том, как этот пароль восстановить, имея доступ к серверу, на котором запущен mysql-server для обоих случаев, когда пароль о учетной записи root ИЗВЕСТЕН и НЕ ИЗВЕСТЕН.
Как поменять пароль root в MySQL
Если пароль root ИЗВЕСТЕН
Возьмем самую простую ситуацию, когда пароль от учетной записи root вам известен и все что нужно сделать, это просто его поменять. Чтобы задать новый пароль для учетной записи root, необходимо проделать следующие действия:
1) Подключаемся в консоль MySQL сервера с правами root (не забываем ввести пароль, после появления соответствующего запроса):
2) Меняем пароль для пользователя root:
Для MySQL версий 5.7.6 и новее (5.7.7, 5.7.8. )
Для MySQL версий 5.7.5 и старее (5.7.4, 5.7.3. )
NEW_PASSWORD — это пароль, который вам необходимо поменять на свой собственный.
В результате выполнения данной команды, мы должны получить вот такой вывод в консоли:
В том случае, если указанные выше команды по какой то причине не сработали, вы можете воспользоваться следующим запросом:
В результате выполнения данной команды, мы должны получить вот такой вывод в консоли:
3) Перезагружаем привилегии, чтобы изменения вступили в силу:
4) Для выхода из консоли MySQL сервера выполняем команду выхода:
После этого, пароль должен поменяться.
Если пароль root НЕ ИЗВЕСТЕН
Если вы не знаете текущий пароль root (потеряли, забыли) в MySQL, то придется пойти чуть более сложным путем, чем описанные действия выше:
1) Останавливаем mysqld:
2) Проверяем, что нет запущенных процессов mysqld:
Если все нормально, то вывод команды должен состоять лишь из одной строки, примерно такого содержания:
3) Создаем каталог /var/run/mysqld для запуска mysqld в safe режиме из консоли
4) Делаем владельцем данного каталога пользователя mysql (чтобы не было проблем с правами)
5) Запускаем MySQL в ручном режиме из консоли, пропуская проверку прав (опция —skip-grant-tables). А также отключаем доступ к серверу через TCP/IP (с помощью опци и —skip-networking), чтобы злоумышленник не мог воспользоваться тем, что мы отключили проверку прав пользователей. При использовании данной опции, доступ к серверу становится возможным только через localhost.
В случае успешного запуска, вывод в консоли должен быть примерно таким:
6) Подключаемся из консоли к серверу mysqld и выбираем базу данных mysql:
7) Используем плагин mysql_native_password, иначе в некоторых случаях будем получать ошибку «ERROR 1524 (HY000): Plugin ‘auth_socket’ is not loaded«, а нам это не нужно:
Вывод в результате выполнения данной команды должен быть примерно таким:
8) Перезагружаем привилегии:
9) Меняем пароль для нужного пользователя, в нашем случае это root:
Для MySQL версий 5.7.6 и новее (5.7.7, 5.7.8. )
Для MySQL версий 5.7.5 и старее (5.7.4, 5.7.3. )
NEW_PASSWORD — это пароль, который вам необходимо поменять на свой собственный.
В результате выполнения данной команды, мы должны получить вот такой вывод в консоли:
В том случае, если указанные выше команды по какой то причине не сработали, вы можете воспользоваться следующим запросом:
В результате выполнения данной команды, мы должны получить вот такой вывод в консоли:
9) После чего, вводим команду exit для отключения:
10) Выключаем запущенный в ручном режиме Mysqld сервер:
Если все пройдет успешно, то вывод должен быть примерно таким:
То можно принудительно завершить процесс с помощью следующей команды:
11) Проверяем, что нет запущенных процессов mysqld:
Если все нормально, то вывод команды должен состоять лишь из одной строки, примерно такого содержания:
12) Запускаем Mysql-server в нормальном режиме:
И пытаемся подключиться к нашему серверу с новым паролем, который мы установили.
Источник
linux-notes.org
В этой статье «Настройка безопасности MYSQL в Unix/Linux» я хотел бы представить материал по настройке безопасности mysql в операционных системах Unix и Linux. Я долго собирал данный материал и собрал все до кучи.
Я не буду рассказывать как установить mysql, а перейду сразу к настройкам, но если кто-то не знает как установить mysql, то могут ознакомится с полезным материалом тут:
И есть еще много других полезных статей по этой теме, если интересно, то рекомендую использовать поиск или пройтись по рубрикам.
Файл конфигурации my.cnf в Ubuntu и Debian, находится: /etc/mysql/my.cnf
Файл конфигурации my.cnf в CentOS, RedHat и Fedora: /etc/my.cnf
Настройка безопасности MYSQL в Unix/Linux
И так, приступим….
Предварительная установка.
Перед установкой любого программного обеспечения укрепить операционную систему. Это включает в себя функции безопасности для файловой системы:
- Зашифруйте файловую систему, чтобы предотвратить взлома данных злоумышлинниками.
- Установите систему обнаружения вторжений, например Tripwire, который смотрит на изменения в критических системных файлах.
- Нужно заблокировать не использующие порты с помощью брандмауэра, чтобы предотвратить доступ к системным службам.
- Установить сильные пароли для пользователя root и для других пользователей ОС.
- Disallowing OS login by application users: set to “nologin” or “/bin/false”.
- Необходимо настроить sudo всех аккаунтов с привилегиями и требовать пароль для доступа к SUDO.
- Настроить запуск скрипта для сканирования rootkit-отов по расписанию.
- Запустить процес «Список контроля доступа» (ACL)на уровне ОС: Расширения SELinux или AppArmor. Эти программы будут ограничивать систему или процессы на сервере от доступа к данным и ресурсам, которые явно не определены.
Настройка безопасности после установки mysql.
После установки MySQL, существуют различные подходы к обеспечению первоначальной настройки.
Первый вариант — это сделать все это самому, вручную:
Проверяем, установлен ли пароль дял пользователя root и если нет, то установим его:
И устанавливаем пароль:
Удаляем анонимных пользователей:
Удалим (запретим) удаленный доступ для пользователя root:
Удаляем стандартную базу данных с именем «test»:
Перезагрузим пользовательские привелегии:
По умолчанию, MySQL будет работать через «mysqld_safe», который не делает MySQL безопасным. Скрипт mysqld_safe обеспечивает функциональность следующим образом: «Скрипт запускает демон MySQL или перезапускает его, если он неожиданно умирает». Таким образом, если кто-то пытается запустить mysql от пользователя root, то скрипт не запустится. Процесс mysql может работать без mysqld_safe, вы можете запустить его следующим образом, через sudo:
Путь к демону может отличатся, все зависит от ОС.
Второй вариант — это запустить «mysql_secure_installation».
2-й способ более простой и скрипт выполнит все за вас. Запустите скрипт «mysql_secure_installation». Это поможет выполнить несколько процедур, которые будут устранять некоторыми значениями по умолчанию, которые являются опасными для использования:
данный скрипт запросит у вас пароль суперпользователя который вы создали во время установки. Сразу же после этого, вам будет предложено ряд вопросов. Вы должны ответить «Y» (Да), на все оставшиеся вопросы.
И так, все установлено и теперь нужно отредактировать конфигурационный файл my.cnf и внести ряд полезных изменений:
Первый параметр, который мы должны проверить это «bind-address» который находится в разделе «[mysqld]». Этот параметр говорит что mysql будет запущен на локальном сервере без выхода в интернет и к нему не смогут подключится, приведите к следующему виду:
Это гарантирует, что MySQL не принимает соединения ниоткуда, за исключением локальной машины. Если вам нужен доступ к этой базе данных с другой машины, то можно сделать отправка данных через SSH туннель.
В этом же разделе данного файла, я добавляю директиву, чтобы отключить возможность загрузки локальных файлов:
Это отключит загрузку файлов из файловой системы для пользователей без прав на уровне файлов в базе данных. Логирование может показать много информации о падении сервера например, по этому, стоит вести логи.
Вы можете установить путь где будет желать лог-файл ( в этом же разделе»[mysqld]»):
Рекомендуется отключение символических ссылок для предотвращения различного рисков в безопасности:
Это не полный конфиг, чтобы просмотреть полный, перейдите:
Это готовый и оптимизированный конфигурационный файл. Он довольно большой, по этому, я его вынес в отдельный файл. Можете использовать его.
НЕ ДЛЯ ПАРАНОИКОВ! Можно прописать логин и пароль и входить без него, для этого:
user_mysql — пользователь в mysql.
password_mysql — пароль от пользователя user_mysql в mysql.
В следующий раз при запуске mysql команд в mysql, mysqlcheck, mysqdump утилиты будут брать user_mysql & password_mysql с файла и это с экономит ваше время (и не нужно прописывать -u и -p).
Убедитесь, что лог-файл для MySQL, и лог с ошибками, а так же каталог где лежат логи MySQL не доступен для чтения другим пользователям:
Настройка безопасности внутри MySQL.
Есть ряд шагов, которые можно предпринять при использовании MySQL для улучшения безопасности. Я будем вводить команды внутри MySQL, по этому, нужно войти:
Вам будет предложено ввести пароль суперпользователя, который вы создали ранее.
Обеспечение паролей и Host ассоциаций
Во-первых, необходимо проверить, что никто из пользователей не остался без пароля или без ассоциацивных хостов в MySQL:
Как вы можете видеть, в примере, пользователь «Test-user» не имеет пароля и работает независимо от хоста и БД. Это очень небезопасно.
Мы можем установить пароль для пользователя. Измените «newPassWord» и установить пароль который вам нужно:
Если проверим таблицу user снова, то увидим, что пользователь Test-user теперь имеет пароль:
Если вы посмотрите в поле «Host», вы увидите, что у нас еще есть «%», который является джокером. Это означает, что данный пользователь имеет право работать с любым хостом на сервере. Это не то, что нужно и необходимо изменить на «localhost»:
Если еще раз проверить, то можно увидеть, что таблица user теперь имеет соответствующие поля и они корректны:
Если таблица содержит пустых пользователей (В этот примере нет таких, так как я запустил «mysql_secure_installation», но я расскажу об этом в любом случае), мы должны удалить их:
После того как я сделал модифицировать таблицы user, нужно выполнить следующую команду, чтобы активировать новые привилегии:
Назначение пользователей и присваивание им прав.
Каждое приложение, которое использует MySQL должно иметь своего собственного пользователя, который будет имеет доступ к базам данных, необходимымих для запуска. И для примера, я создам новую базу данных:
Далее,необходимо создать пользователя для управления этой базой данных, и назначить ему только необходимые привилегии. Чтобы создать нового пользователя, выполните следующую команду:
После чего, необходимо предоставить новые привилегии для только что созданного пользователя на новую таблицу с помощью следующей команды:
В качестве примера, если нужно отменить права, например на UPDATE для пользователя, то это можно сделать так:
Если вам нужны все привилегии для определенной базы данных, вы можем сделать это так:
Выполним обновление привелегий для пользователей:
А сейчас проверим что получилось:
Всегда выполняйте «flush privileges», когда вы закончили вносить изменения.
Поменять пользователя root.
Один дополнительный шаг, который вы можете сделать, это изменить имя пользователя root. Если злоумышленник пытается получить доступ к пользователю root в MySQL, то они должны будут выполнять дополнительную стадию нахождения пользователя.
Чтобы переименовать пользователя root, вы можете использовать:
Вы можем увидеть изменения, используя тот же запрос:
Опять же, необходимо очистить привелегии для этих изменений:
Помните, что вы должны будете войти в MySQL, как вновь созданный пользователь. И теперь, вы должны использовать не root, а имя пользователя которое вы использовали при переименовании выше, чтобы выполнять административные задачи:
Если нужно сбросить пароль от пользователя root в mysql, то рекомендую прочитать статью «Сброс пароля root в MySQL»
Защита файла конфигурации MySQL.
Чтобы сохранить настройки, файл не должен быть доступен для всех, кроме себя. Чтобы обеспечить это, выставитепара на файл 400 или 600. Например:
На всех файлах конфигурации должны иметь владельца root:
И напоследок, для полной защиты, я настоятельно рекомендовал бы защитить файл конфигурации. Для этого, стоит выполнить команду:
Подробно о этой утилите можно прочитать тут:
Убедитесь, что mysqld работает на tcp порту №3306:
А на этом статья «Настройка безопасности MYSQL в Unix/Linux» подошла к завершению.
Источник