Mariadb как подключиться к базе
Перейти к содержимому

Mariadb как подключиться к базе

  • автор:

�� Настройка удаленного доступа MySQL и MariaDB в Linux Ubuntu

По умолчанию сервер MySQL настроен таким образом, что к нему разрешены подключения только с локальной машины, следовательно, подключиться из-вне (по интернет или локальной сети) не получится.

Убедиться в этом можно набрав на сервере команду:

sudo netstat -tlp

В результате получите что-то типа этого:

Активные соединения с интернетом (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 localhost:mysql *:* LISTEN 634/mysqld tcp 0 0 *:http *:* LISTEN 987/nginx -g daemon tcp 0 0 *:ssh *:* LISTEN 375/sshd tcp6 0 0 [::]:http [::]:* LISTEN 987/nginx -g daemon tcp6 0 0 [::]:ssh [::]:* LISTEN 375/sshd

Отсюда видно, что mysql слушает только интерфейс localhost (127.0.0.1). Это не всегда удобно, особенно когда есть необходимость выделить под сервер mysql отдельный сервер. А в рамках корпоративной локальной сети такое бывает очень часто.

Чтобы разрешить серверу MySQL принимать запросы из-вне необходимо предпринять несколько несложных шагов:

  1. Поменять одну строчку в конфигурационном файле MySQL;
  2. Создать сетевого пользователя с необходимыми правами.

Разрешаем MySQL слушать интерфейс, который смотрит во внешнюю сеть

Открываем конфигурационный файл любимы редактором, например nano, из под привилегированного пользователя:

sudo nano /etc/mysql/my.cnf

Если у вас установлен сервер mariaDB, то конфигурационный файл находится в другом месте:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
# Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. bind-address = 127.0.0.1

и меняем 127.0.0.1 на 0.0.0.0 — тогда сервер будет слушать все интерфейсы компьютера, либо задаем конкретный ip-адрес локального интерфейса, который смотрит в локальную сеть. Например — 192.168.122.10.

# Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. bind-address = 0.0.0.0

Теперь остается только перезапустить сервис MySQL:

sudo service mysql restart

Теперь осталось только завести пользователя, которому разрешено обращаться к серверу MySQL извне.

Создание внешнего пользователя MySQL

Теперь нужной подключиться к MySql с паролем суперпользователя системы (системы. а не MySQL):

sudo mysql

После подключения к MySQL можно создать пользователя и дать привилегию, например:

mysql> GRANT ALL PRIVILEGES ON userdata.* TO 'user'@'%' IDENTIFIED BY 'password';

Здесь дается полный доступ к базе данных userdata пользователю с логином user и паролем password, подключающемуся с любого ip.

Можно ограничить права пользователя, разрешив ему подключаться к базе только с определенного ip. Для этого меняем % на конкретный ip-адрес, например 192.168.122.16

mysql> GRANT ALL PRIVILEGES ON userdata.* TO 'user'@'192.168.122.16' IDENTIFIED BY 'password';

А можно и разрешить пользователю всё — подключаться ко всем базам с любого ip-адреса

mysql> GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'password';

Это делать не желательно, если конечно вы не заводите себя.

�� Похожие статьи на сайте

  • Шпаргалка основных команд mysql по работе с базой данных и таблицам
  • Настройка удаленного доступа MySQL и MariaDB в Linux Ubuntu
  • Процесс создания базы MySQL, нового пользователя и загрузки дампа
  • Как посмотреть всех пользователей и привилегии в MySQL
  • Проверка, восстановление и оптимизация баз MySQL
  • Установка Nginx, MariaDB и PHP-FPM на Ubuntu 16.04
  • Как полностью удалить MySQL из Ubuntu
  • Удаление всех таблиц из базы MySQL
  • Установка сервера percona
  • Установка Nginx+php5-fpm+MariaDB на Ubuntu 14.04
  • Дампы баз данных MySql — mysqldump
  • Перенос баз данных MySQL
  • Защита phpMyAdmin

Настройка удаленного подключения к MySQL (MariaDB) базе

В Linux демон MySQL после установки настроен сразу только на локальное подключение. MySQL разрешает подключения только на интерфейсе 127.0.0.1. Чаще всего MySQL устанавливается рядом с web-сервером и подключение к нему происходит локально.

В редких случаях необходимо разрешить подключение для локальной сети или еще реже из любого места.

Чтобы настроить удаленное подключение к MySQL необходимо выполнить 3 шага:

  1. разрешить MySQL слушать не только 127.0.0.1;
  2. добавить пользователю право подключаться не с localhost.
  3. настроить файрвол

Первым делом проверим, как опубликован демон

netstat -an

Отлично, половина дела сделано. А если нет?, то

Настраиваем MySQL

Открываем основной конфигурационный файл MySQL:

sudo vim /etc/mysql/my.cnf

Находим строчку и комментируем:

. # bind-address = 127.0.0.1

Это укажет демону принимать входящие соединения с любых интерфейсов.

Если нужно разрешить подключение только с ЛВС, то указываем IP-адрес сервера. К примеру bind-address = 192.168.0.25 , где 192.168.0.25 — адрес нашего сервера с БД.

Далее перезапускаем демон БД:

sudo service mysqld restart

Обновляем права пользователя

Подключаемся к БД, и даем права пользователю

mysql -u root -p GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.10.11.21' IDENTIFIED BY 'P@ssw0rd';

Доступ отовсюду, но так делать не стоит.

RENAME USER 'root'@'localhost' TO 'root'@'%'; FLUSH PRIVILEGES;

Первая команда добавит пользователю root возможность подключаться c любого адреса. Вторая команда применит новые права.

Если Вы хотите ограничить подключение к MySQL только локальной сетью, последние команды должны быть такими:

RENAME USER 'root'@'localhost' TO 'root'@'192.168.0.*'; FLUSH PRIVILEGES;

Настраиваем файрвол

Обязательно настраиваем firewall

firewall-cmd --permanent --add-port=3306/tcp firewall-cmd --reload

Работа с базами данных и пользователями в MySQL и MariaDB

Краткая инструкция по созданию и удалению баз данных и пользователей в системе управления базами данных MySQL и MariaDB из консоли.

В первую очередь входим в консоль mysql под суперпользователем root

# mysql -u root -p

Работа с базами данных

Просмотреть список баз данных в системе или на сервере можно командой

SHOW DATABASES;

Для создания базы данных с именем new_db нужно воспользоваться командой

CREATE DATABASE new_db;

Чтобы удалить базу данных new_db, вводим команду

DROP DATABASE new_db;
SHOW DATABASES;

и база данных new_db в списке должна отстуствовать.

Работа с пользователями

Создать пользователя БД можно командой

CREATE USER 'dbuser'@'*' IDENTIFIED BY 'password';
  • dbuser — имя пользователя
  • * означает, что пользователь может подключиться удалённо (для того, чтобы пользователь мог подключиться только локально, необходимо заменить звёздочку на localhost)
  • password — пароль для этого пользователя

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

SET PASSWORD FOR 'dbuser'@'*' = PASSWORD('yourNewPassword');

Чтобы задать права пользователю dbuser на базу данных new_db, необходимо воспользоваться командой

GRANT ALL PRIVILEGES ON new_db.* TO 'dbuser'@'*'; FLUSH PRIVILEGES;

Теперь для того, чтобы подключиться с учётной записью пользователя dbuser, необходимо выйти из консоли mysql

EXIT;

и войти в неё уже пользователем dbuser

# mysql -u dbuser -p

Чтобы задать пользователю определённые права, их необходимо прописать через запятую вместо ALL. В СУБД MySQL и MariaDB существуют следующие права:

  • CREATE — создание БД и таблиц
  • SELECT — выборка данных
  • INSERT — добавление записей в таблицы
  • UPDATE — изменение/обновление существующих записей в таблицах
  • DELETE — удаление записей из таблиц
  • DROP — удаление таблиц и записей в них
GRANT SELECT, INSERT, UPDATE ON new_db.* TO 'dbuser'@'*'; FLUSH PRIVILEGES;

Чтобы создать пользователя с неограниченными правами (аналогично суперпользователя root), команду необходимо привести к следующему виду:

GRANT ALL PRIVILEGES ON *.* to 'dbuser'@'*'; FLUSH PRIVILEGES;

Чтобы отозвать права у пользователя, например, лишить его всех прав на базу данных new_db, необходимо запустить такую команду

REVOKE ALL PRIVILEGES ON new_db.* FROM 'dbuser'@'*'; FLUSH PRIVILEGES;

Чтобы просмотреть права пользователя, необходимо запустить команду

SHOW GRANTS FOR 'dbuser'@'*';

Удалить пользователя полностью можно командой

DROP USER 'dbuser'@'*';

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

Похожие посты:

  • Работа с базами данных и пользователями в PostgreSQL
  • Дамп базы данных MariaDB и MySQL
  • Работа с таблицами и данными в MySQL и MariaDB
  • Работа с локальными пользователями и группами в…
  • Подключение PHP к БД MySQL и MariaDB
  • Выполнение SQL-запросов в БД MariaDB (MySQL) на PHP

Подключение приложений к Базе данных Azure для MariaDB

База данных Azure для MariaDB находится на пути выхода на пенсию. Настоятельно рекомендуется выполнить миграцию в База данных Azure для MySQL. Дополнительные сведения о переходе на База данных Azure для MySQL см. в статье «Что происходит с База данных Azure для MariaDB?».

В этой статье перечислены типы строк подключения, поддерживаемые базой данных Azure для MariaDB, а также шаблоны и примеры. Строка подключения может содержать различные параметры и настройки.

  • Сведения о получении сертификата см. в статье Настройка SSL-подключений в приложении для безопасного подключения к базе данных Azure для MySQL.
  • = [имя_сервера].mariadb.database.azure.com
  • @ = формат userID для правильной аутентификации. Если использовать только userID, аутентификация завершится ошибкой.

ADO.NET

Server=; Port=3306; Database=; Uid=; Pwd=; SslMode=Preferred; 

В этом примере имя сервера — mydemoserver , имя базы данных — wpdb , имя пользователя — WPAdmin , а пароль — mypassword!2 . В результате строка подключения будет следующей:

Server= "mydemoserver.mariadb.database.azure.com"; Port=3306; Database= "wpdb"; Uid= "WPAdmin@mydemoserver"; Pwd="mypassword!2"; SslMode=Required; 

JDBC

String url ="jdbc:mariadb://:3306/?useSSL=true&trustServerCertificate=true"; myDbConn = DriverManager.getConnection(url, "", ); 

Node.js

var conn = mysql.createConnection(", user: "", password: , database: , port: 3306, ssl:)>>); 

ODBC

DRIVER=; Server=""; Port=3306; Database=; Uid=""; Pwd=; sslca=; sslverify=1; 

PHP

$con=mysqli_init(); mysqli_ssl_set($con, NULL, NULL, , NULL, NULL); mysqli_real_connect($con, "", "", , , 3306); 

Python

cnx = mysql.connector.connect(user="", password=, host="", port=3306, database=, ssl_ca=, ssl_verify_cert=true) 

Ruby

client = Mysql2::Client.new(username: "", password: , database: , host: "", port: 3306, sslca:, sslverify:false, sslcipher:'AES256-SHA') 

Получение сведений о строке подключения на портале Azure

The Connection strings pane in the Azure portal

В портал Azure перейдите на сервер База данных Azure для MariaDB, а затем выберите строки Подключение ion, чтобы получить список строк для вашего экземпляра:

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *