Categories: PowerShell

PowerShell: подключение к MariaDB/MySQL, выполнение запросов

Вы можете подключиться к базе данных MySQL/MariaDB, получить данные из таблицы, добавить или обновить данные прямо из PowerShell скрипта. В этой статье мы рассмотрим несколько простых способов выполнения SQL запросов к удаленной базе данных MySQL (MariaDB) из консоли PowerShell.

Прежде всего проверьте, что удаленный SQL сервер разрешает удаленный подключения по порту 3306 (по умолчанию):

Test-NetConnection mysqlDBserver -port 3306

Затем на сервере MySQL разрешите пользователю удаленные подключения с вашего IP адреса или с любого хоста (замените IP на %):

GRANT ALL ON myDB.* to 'dbadmin'@'192.168.15.23' IDENTIFIED BY 'password1!'  WITH GRANT OPTION;
FLUSH PRIVILEGES;

PowerShell модуль SimplySql для подключения к БД MariaDB и MySQL

Для подключения и выполнения запросов к MySQL/MariaDB базе можно использовать универсальный PowerShell модуль SimplySql . Этот модуль можно установить из PowerShell Online Gallery:

Install-Module -Name SimplySql

Для подключения к MariDB/MySQL серверу используется командлет Open -MySQLConnection , а для выполнения SQL запросов — Invoke -SQLQuery .

Сохранить имя пользователя и пароль для подключения к SQL серверу:

$DBUser = "dbadmin"
$DBPassword = ConvertTo-SecureString -String "password1!" -AsPlainText -Force
$creds = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $DBUser, $DBPassword

Подключиться к базе данных MySQL/MariaDB на удаленном сервере:

$sqlConnect = Open-MySqlConnection -ConnectionName MyDBCon -Server 192.168.158.129 -Database myDB -Port 3306  -Credential $creds -WarningAction SilentlyContinue

Выполнить запрос к таблице MySQL с параметром:

$cityname="MSK"
$data = Invoke-SqlQuery -query "SELECT * FROM myDB WHERE city like '%$cityname%'"

Вставить данные в таблицу:

Invoke-SqlQuery -query "INSERT INTO myDB (name,phone,id,city,email) VALUES  ('Dmitriy','1-23456789',233, 'SPB',' [email protected] ')"

Обновить значение поля в таблице MySQL:

Invoke-SqlQuery -query "UPDATE myDB SET city = 'MSK' WHERE ID = 233"

Закрыть подключение к базе данных:

Close-SqlConnection -connectionname MyDBCon

Выполнение SQL запросов из PowerShell через MySQL коннектор

Для подключения к серверу MySQL/MariaDB базе данных можно использовать официальный MySQL .NET Connector , который доступен для свободной загрузки с сайта MySQL. Скачайте и установите последнюю версию коннектора ( https://dev.mysql.com/downloads/connector/net/ )

Примечание . Не обязательно ставить полную версию MySQL .NET Connector, достаточно скопировать на компьютер файл библиотеки MySql.Data.dll.

В следующем примере мы рассмотрим PowerShell скрипт, который получает список пользователей и email адресов из AD (список пользователей AD формируется с помощью командлета Get-ADUser ) и записывает их в базу данных MySQL.

#подключение библиотеки MySql.Data.dll
[void][system.reflection.Assembly]::LoadFrom("C:Program Files (x86)MySQLMySQL Connector NET 8.3.0MySql.Data.dll")
$mysql_server = "192.168.158.129"
$mysql_user = "dbadmin"
$mysql_password = "password1!"
$dbName = "myDB"
$Connection = New-Object -TypeName MySql.Data.MySqlClient.MySqlConnection
$Connection.ConnectionString = "SERVER=$mysql_server;DATABASE=$dbName;UID=$mysql_user;PWD=$mysql_password"
$Connection.Open()
$sql = New-Object MySql.Data.MySqlClient.MySqlCommand
$sql.Connection = $Connection
#формируем список пользователей с именами и email адресами
Import-Module activedirectory
$UserList=Get-ADUser -SearchBase ‘OU=Users,OU=London,DC=contoso,DC=ru’ -filter * -properties name, EmailAddress
ForEach($user in $UserList)
{
$uname=$user.Name;
$uemail=$user.EmailAddress;
#записываем информацию о каждом пользователе в табдицу БД
$sql.CommandText = "INSERT INTO users (Name,Email) VALUES ('$uname','$uemail')"
$sql.ExecuteNonQuery()
}
$Reader.Close()
$Connection.Close()

Следующий скрипт с помощью SELECT запроса получит данные из таблицы БД и покажет их в консоли PowerShell.

Set-ExecutionPolicy RemoteSigned
[void][system.reflection.Assembly]::LoadFrom("C:Program Files (x86)MySQLMySQL Connector NET 8.3.0MySql.Data.dll")
$mysql_server = "192.168.158.129"
$mysql_user = "dbadmin"
$mysql_password = "password1!"
$dbName = "myDB"
$Connection = New-Object -TypeName MySql.Data.MySqlClient.MySqlConnection
$Connection.ConnectionString = "SERVER=$mysql_server;DATABASE=$dbName;UID=$mysql_user;PWD=$mysql_password"
$Connection.Open()
$MYSQLCommand = New-Object MySql.Data.MySqlClient.MySqlCommand
$MYSQLDataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter
$MYSQLDataSet = New-Object System.Data.DataSet
$MYSQLCommand.Connection=$Connection
$MYSQLCommand.CommandText='SELECT * from  users'
$MYSQLDataAdapter.SelectCommand=$MYSQLCommand
$NumberOfDataSets=$MYSQLDataAdapter.Fill($MYSQLDataSet, "data")
foreach($DataSet in $MYSQLDataSet.tables[0])
{
write-host "User:" $DataSet.name  "Email:" $DataSet.email
}
$Connection.Close()

В следующей статьях мы рассматривали пример использования SQL базы для хранения информации из журналов событий Windows: Определяем кто удалил файл в общей сетевой папке Windows .
admin

Share
Published by
admin

Recent Posts

Что такое Zulip

Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…

2 месяца ago

Что такое Zookeeper

Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…

2 месяца ago

Что такое Zimbra

Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…

2 месяца ago

Что такое Zabbix

Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…

2 месяца ago

Что такое YouTube

YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…

2 месяца ago

Что такое yota

Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…

2 месяца ago