Ранее я загрузил и установил сервер (продукт) СУБД «MySQL» версии 8.0 (бесплатной, со словом «Community» в названии) к себе на компьютер. Об этом у меня есть три поста: часть 1, часть 2, часть 3. Во время установки сервера этой СУБД (при его настройке) я выбрал способ работы с исполняемым файлом сервера «mysqld.exe» как с программой, которую нужно запускать и останавливать вручную.
Более популярной альтернативой такой настройки является способ запуска и останова сервера «mysqld.exe» как службы (service) «Windows» (этот способ тоже может быть запуском соответствующей службы вручную или автоматическим, при начале работы операционной системы). В данном посте речь пойдет о том, как настроить СУБД «MySQL» для работы в качестве службы «Windows».
Такая настройка может быть выполнена по-разному, в зависимости от того, в какой ситуации находится пользователь: СУБД уже установлена для работы не в качестве службы «Windows» (мой случай), СУБД еще не установлена.
1. СУБД «MySQL» уже установлена для работы НЕ службой «Windows»
В первую очередь я выполнил останов сервера «mysqld.exe», который у меня был запущен на данный момент как самостоятельная программа, а не как служба «Windows». Перед созданием запуска сервера в качестве службы «Windows» этот останов требуют сделать и в соответствующем разделе документации СУБД (про запуск и останов сервера как самостоятельной программы я писал в части 3 серии постов про установку этой СУБД).
Службы в операционных системах «Windows» можно создавать несколькими способами (например, с помощью командлета New-Service в языке «PowerShell» или с помощью утилиты «sc.exe»). Я выбрал способ, предоставляемый самим исполняемым файлом «mysqld.exe», с помощью параметра --install
(создание службы с автоматическим запуском) или с помощью параметра --install-manual
(создание службы с запуском вручную).
Важно: как я уже описывал ранее в другом посте, запускать сервер «mysqld.exe» следует от имени пользователя с административными правами, так как этот сервер пишет логи в папку C:\ProgramData\MySQL\MySQL Server 8.0\Data\
, для чего ему нужны административные права. По крайней мере, так это работает у меня в системе.
Запуск «mysqld.exe» только с этим параметром, например, такой (из программы-оболочки «PowerShell»):
(админ) PS C:\Program Files\MySQL\MySQL Server 8.0\bin> .\mysqld --install-manual
у меня сообщает в консоль, что «Service successfully installed.» (служба успешно установлена).
Действительно, служба с названием «MySQL» (это название службы, создаваемой вышеприведенной командой по умолчанию, но в этой команде можно указать другое название) успешно появляется в списке служб «Windows». Этот список можно открыть из диспетчера задач (этот диспетчер можно вызвать сочетанием клавиш «Ctrl+Shift+Esc»), на вкладке «Службы» внизу, щелкнув мышью по ссылке «Открыть службы» (если этот список уже открыт, то может потребоваться его обновить).
Вышеприведенная команда не запускает службу, а только добавляет (устанавливает) ее в список служб. Добавленную службу можно запустить из списка служб (это только один из ряда способов запустить службу).
Запуск службы «MySQL», добавленной вышеприведенной командой, у меня приводит к следующей ошибке («Служба «MySQL» на «Локальный компьютер» была запущена и затем остановлена. Некоторые службы автоматически останавливаются, если они не используются другими службами или программами.»):
Служба, очевидно, остается не запущенной. Эта ошибка может быть вызвана разными причинами. В данном случае причина в том, что команда добавления (установки) службы является неполной (см. пояснения и правильный вариант ниже).
Чтобы ввести более полную команду, я удалил службу из списка служб с помощью следующей команды (из программы-оболочки «PowerShell»):
(админ) PS C:\Program Files\MySQL\MySQL Server 8.0\bin> .\mysqld --remove
Эта команда одинакова хоть для службы, добавленной ранее с параметром --install
, хоть для службы, добавленной ранее с параметром --install-manual
. Если название службы отличается от умолчательного «MySQL», то его следует указать в команде. Эта команда при успешном удалении службы выдает в консоль сообщение «Service successfully removed.».
Правильно будет (для нашего случая) задать при запуске добавления (установки) службы параметр --defaults-file
с путем к файлу «my.ini», в котором содержатся настройки СУБД «MySQL», выполненные при установке этой СУБД программой-установщиком. Вот как у меня выглядит эта команда:
(админ) PS C:\Program Files\MySQL\MySQL Server 8.0\bin> .\mysqld --install-manual MySQL --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini"
Эта команда у меня срабатывает успешно, служба добавляется в список служб. После этого я выполнил запуск службы и он прошел удачно. Служба «MySQL» запустилась, процесс сервера «mysqld.exe» появился в списке процессов и я смог начать работать в программе-клиенте «mysql.exe».
В вышеприведенной команде отмечу два момента. Во-первых, порядок параметров важен. Если параметр --defaults-file
будет идти в команде раньше параметра --install-manual
, то будет произведена попытка запуска сервера СУБД, а не добавление (установка) службы в список служб. Во-вторых, важно обязательно указать название службы, даже если оно является умолчательным «MySQL», как в данном случае. Без этого у меня запуск вышеприведенной команды выдает ошибку и служба не добавляется в список служб.
Еще одно важное замечание. При добавлении (установке) службы в список служб имеет значение, от имени какой учетной записи операционной системы будет производиться вход в систему (запуск) данной службы. После добавления службы в список служб это можно посмотреть, открыв свойства данной службы. Вот как эти свойства выглядят у меня (вкладка «Вход в систему» окна свойств):
Под «системной учетной записью» у меня в данном случае подразумевается учетная запись «Локальная система», она же просто «СИСТЕМА».
Учетная запись, от имени которой запускается служба, должна обладать определенным набором прав и разрешений, иначе служба не будет запущена успешно. В нашем случае учетная запись должна обладать правом запуска служб, а также разрешением на запуск исполняемого файла «mysqld.exe», разрешением на полный доступ к папке логов и данных C:\ProgramData\MySQL\MySQL Server 8.0\Data\
, разрешением на чтение файла с настройками C:\ProgramData\MySQL\MySQL Server 8.0\my.ini
(пути приведены для моего компьютера, вообще они могут отличаться от указанных).
Учетная запись «СИСТЕМА» обладает всеми нужными правами и разрешениями, поэтому в данном случае мне не пришлось заниматься настройкой этих прав и разрешений.
Перенастройка (Reconfigure). Я пытался выполнить перенастройку установленной у меня на компьютере СУБД «MySQL» через программу-установщик «MySQL Installer — Community». В программе-установщике есть такая возможность. Но на шаге перенастройки, касающемся запуска сервера СУБД как службы «Windows» после указания новых настроек не получается продвинуться дальше: кнопка «Next» остается неактивной. Если не пытаться выполнить эту перенастройку, а просто полностью удалить установку СУБД «MySQL» (вместе с папкой данных) через эту же программу-установщик, а затем установить СУБД «MySQL» заново, но теперь выбрав способ работы сервера СУБД в качестве службы «Windows» (с запуском вручную или с автоматическим запуском при запуске операционной системы), то всё получается успешно.
2. Установка СУБД «MySQL» для работы службой «Windows» изначально
Про установку этой СУБД я уже рассказывал подробно и пошагово ранее в трех постах (часть 1, часть 2, часть 3). Но там я на шаге выбора способа работы сервера «mysqld.exe» выбирал способ работы с сервером как с самостоятельной программой, а не в качестве службы «Windows». Теперь вернемся к установке СУБД «MySQL», но на этом шаге выберем вариант работы в качестве службы «Windows»:
Как видно на иллюстрации выше, теперь я оставил установленной галку «Configure MySQL Server as a Windows Service» (в прошлый раз я ее снимал).
Также я снял галку «Start the MySQL Server at System Startup»; это значит, что служба, добавляемая в список служб, будет с запуском вручную (если эту галку оставить установленной, то служба будет с автоматическим запуском при запуске операционной системы). Мне не нужно, чтобы процесс сервера «mysqld.exe» постоянно болтался запущенным в списке процессов, отъедая ресурсы моего компьютера. Я устанавливаю СУБД «MySQL» для изучения и экспериментов, а не для постоянной работы (production).
В первой половине этого поста я показывал, как добавить службу с названием «MySQL» (название по умолчанию) в список служб. В данном случае программа-установщик, как видно на иллюстрации выше, предлагает назвать службу «MySQL80». Ничего не имею против, я оставил эту настройку как есть.
Как видно на иллюстрации выше, я оставил учетную запись, от имени которой будет запускаться наша служба, по умолчанию: «Standard System Account». В соответствующем разделе документации СУБД, однако, сказано, что в данном случае под этой фразой подразумевается учетная запись «Network Service» (у меня в компьютере имя этой учетной записи написано большими буквами: «NETWORK SERVICE», еще ее называют «Сетевой службой»), цитата:
When Standard System Account is selected (default), the service logs on as Network Service.
Установку СУБД «MySQL» я закончил успешно (остальные шаги установки и настройки выполняются так же, как было описано в предыдущих постах). Служба «MySQL80» (с запуском вручную) запускается и останавливается успешно, можно работать с сервером СУБД.
Вот как выглядит вкладка «Вход в систему» окна свойств службы «MySQL80», добавленной программой-установщиком в список служб:
На иллюстрации выше видно, что выбрана учетная запись «Сетевая служба», о чем было сказано ранее. Этот пароль я не вводил, в этом окне всё настроено программой-установщиком. Учетная запись «NETWORK SERVICE» получила полный доступ к папке данных (это тоже настроено программой-установщиком).
Время на прочтение4 мин
Количество просмотров26K
В этой статье рассмотрим почему мы все любим Powershell на паре рабочих примеров. Все это будет полезно при инвентаризации, поиске конкретного компьютера и прочих делах. Powershell оборудован удобными и запоминающимися командлетами, автодополнение всего и интуитивные названия делают его наверное самым простым в освоении языком.
В этом руководстве рассмотрим несколько крутых по мнению автора команд и расскажем почему это круто. Начнем со снипетов.
Полезные снипеты:
Заносим компьютер в TrustedHosts
Пригодится при подключении к серверу по WinRm. Команда перезапишет предыдущее значение, будьте осторожны, добавляйте ip или имена хостов через запятую. Если все ваши хосты находятся в AD, трогать этот файл не нужно.
Set-Item WSMan:\localhost\Client\TrustedHosts -Value '192.168.0.1'
Wildcard тоже работает, если не хотите каждый раз добавлять новый хост в TrustedHosts.
Set-Item WSMan:\localhost\Client\TrustedHosts -Value '*'
Храним пароль в зашифрованном виде в файле:
Пригодится для автоматизации, сильно облегчает жизнь при выполнении скриптов из планировщика, но при этом пароль хранится в безопасном виде.
Если выполнять скрипты из под зашедшего пользователя, будут использоваться креды этого пользователя.
Read-Host -AsSecureString | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Out-File -FilePath .\Password.txt
Забираем зашифрованный пароль из файла:
$Password = Get-Content C:\Password.txt | ConvertTo-SecureString
Тоже самое можно проделать и с Credentials, заменим Read-Host на Get-Credential.
Get-Credential | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Out-File -FilePath .\Credential.txt
Получаем дату последней загрузки ОС.
(gcim win32_operatingsystem).LastBootUpTime
Тем же самым способом получаем еще и аптайм.
Get-CimInstance Win32_operatingsystem -ComputerName $computers |
Select-Object LastBootUpTime,
@{Name="Uptime";Expression = {(Get-Date) - $_.LastBootUptime}}
Получаем список установленных программ:
Именно программ, а не компонентов:
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate |
Format-Table –AutoSize
Получаем список дисков, в том числе сетевых и свободное место на них
Get-PSDrive -PSProvider filesystem | where-object {$_.used -gt 0} |
Select-Object -property Root,@{name="Size";expression={($_.used+$_.free)/1GB -as [int]}},
@{name="Used";expression={($_.used/1GB) -as [int]}},
@{name="Free";expression={($_.free/1GB) -as [int]}}
Останавливаем процесс по его имени.
В этом примере останавливаем Chrome. Wildcard тоже подойдет, если хотите завершить всё.
Get-Process -Name "chrome" | Stop-Process
Копируем настройки доступа к папкам на дочерние папки
Пригодится, если вам захочется отобрать или дать права на пользование к папке и всем подпапкам у группы пользователей или у пользователя. Команда рекурсивно, снизу вверх копирует права на чтение и запись.
Копируем ACL у папки:
$Acl = Get-Acl -Path C:\folder\
Вставляем ACL на все файлы и подпапки:
Get-ChildItem -Path C:\Folder\ -Recurse | Set-Acl $Acl
Полезные скрипты:
Вот тут начинается самое страшное веселье. Если вам нужно провести инвентаризацию, будет очень полезно глянуть. Если ваши компьютеры не в AD, то скрипт станет немного сложнее, итерировать придется по заранее составленному файлу, а пароли нужно будет брать из файла или через Get-Credential. Вся разница:
C AD:
$ADComputers = (Get-ADComputer -filter *).DNSHostName
Без AD:
$Credentials = Get-Credential
$Computers = Get-Content -Path C:\servers.txt
Получаем аптайм дату последней загрузки каждого из компьютеров в AD:
$ADComputers = (Get-ADComputer -filter *).DNSHostName
foreach ($i in $ADComputers) {
Invoke-Command $i {
Get-CimInstance Win32_operatingsystem |
Select-Object LastBootUpTime,
@{Name="Uptime";Expression = {(Get-Date) - $_.LastBootUptime}}
}
}
Получаем все установленные программы на всех компьютерах AD:
$ADComputers = (Get-ADComputer -filter *).DNSHostName
foreach ($i in $ADComputers) {
Invoke-Command -computername $i {
gcim win32_product -computername $env:computername | Sort-Object -property Vendor,Name | Select-Object -property Vendor,Name, Caption
}
}
Тоже самое можно будет получить и для компонентов, подставив в Invoke-Command:
Get-WindowsFeature | Where-Object -Property "Installed" -EQ "Installed"
Получаем компьютеры, где запущен нужный нам процесс:
Если вы забыли на каком компьютере запущена та или иная программа, можно получить её таким способом. Рассмотрим на примере браузера:
$ADComputers = (Get-ADComputer -filter *).DNSHostName
foreach ($i in $ADComputers) {
Invoke-Command -computername $i {
Get-Process -Name "Chrome" -ErrorAction SilentlyContinue
}
}
Убить браузер можно будет так же легко, как и получить процесс:
$ADComputers = (Get-ADComputer -filter *).DNSHostName
foreach ($i in $ADComputers) {
Invoke-Command -computername $i {
Get-Process -Name "Chrome" | Stop-Process -ErrorAction SilentlyContinue
}
}
Получаем компьютеры, где установлена конкретная программа:
Кокретно в этом случае Java. Поможет при проведении инвентаризации можно будет посмотреть имена компьютеров где она была установлена.
$ADComputers = (Get-ADComputer -filter *).DNSHostName
foreach ($i in $ADComputers) {
Invoke-Command -computername $i {
gcim win32_product -computername $env:computername | Select-String -Pattern "Java" -AllMatches | Sort-Object -property Vendor,Name | Format-Table -ErrorAction SilentlyContinue
}
}
Если у вас возникнут предложения, будем рады добавить их в эту статью. Надеемся, эти примеры были для вас полезны.
Предлагаем обновлённый тариф UltraLite Windows VDS за 99 рублей с установленной Windows Server 2019 Core.
В одном посте невозможно описать все возможности, появившиеся после введения поддержки Window Powershell в Microsoft SQL Server, однако этим постом я постараюсь показать хотя бы часть этих возможностей. В состав SQL Server, начиная с версии SQL Server 2008, входят две оснастки:
- Поставщик (Provider) SQL Server, предоставляющий простой механизм навигации – «внутри» SQL Server, можно использовать команды dir, ls, cd, Set-Location, Get-Location и т.д.;
- Набор командлетов для указания действий SQL Server (например, выполнение скрипта sqlcmd).
Таким образом, сейчас, вы можете без применения стороннего ПО получать в своих скриптах на PowerShell всю необходимую информацию с SQL Server.
Чем это может быть полезно для администратора?
Итак, если у вас уже установлены клиентские утилиты (SQL Server Management Studio), то в вашей системе уже есть перечисленные выше оснастки и дополнительных действий не требуется. Если нет – вы можете скачать Management Studio бесплатно здесь.
После установки Management Studio и подключения к интересующему вас экземпляру SQL Server, можно запустить утилиту sqlps прямо оттуда:
Если в появившемся окне sqlps набрать команду `dir`, можно увидеть любопытную картину (обратите внимание на объекты в ObjectExplorer в SSMS и результатом команды `dir`):
Вместо использования sqlps, можно просто добавить новые оснастки так:
add-pssnapin SqlServerCmdletSnapin100;
add-pssnapin SqlServerProviderSnapin100;
Убедиться, что они установлены, можно ознакомившись с помощью командлета get-pssnapin –registered.
Итак, после добавления этих оснасток можно посмотреть вывод командлета Get-Psdrive:
Выполнив cd SQLServer:\SQL\ServerName\InstanceName\, мы добьемся того же результата, что и запуская sqlps из SSMS.
Теперь немного о самой большой, «вкусности». Командлеты. Всего нам доступно пять командлетов:
- Invoke-Sqlcmd – практически то же самое, что утилита sqlcmd, c помощью этого командлета можно выполнять SQL-запросы на нужном SQLServer.
- Invoke-PolicyEvaluation – проверяет соответствует ли целевой набор объектов SQL Server условиям, определенным в схемах управления на основе политик.
- Encode-Sqlname – кодировка идентификаторов SQL Server. В SQL Server вы можете присвоить идентификатору в квадратных скобках практически любое значение, что может создать трудности при обращении к нему с помощью PowerShell. Для этого используется командлет Encode-Sqlname, превращающий «My:long_and|complexity|identy» в «My%3Along_and%7Ccomplexity%7Cidenty»
- Decode-Sqlname – совершает обратное преобразование
- Convert-UrnToPath – преобразует URN-строки, используемые моделью объектов SMO, в «читабельные» пути.
Самым важным, для меня, является командлет Invoke-Sqlcmd позволяющий выполнять произвольный SQL-запрос на сервере.
Представим ситуацию, что вам нужно собрать информацию по используемой памяти на десятке экземпляров, установленных на некотором количестве физических серверов в вашей сети. Чтобы добиться этого, можно использовать сторонние утилиты, позволяющие выполнять запрос на некотором количестве экземпляров, можно использовать ту же sqlcmd, вручную указывая с каких серверов требуется получить данные. С помощью PowerShell эту задачу можно решить проще и элегантнее. Следующий скрипт, например, выведет вам информацию о настройке ‘Max Server Memory (MB)’, на всех экземплярах зарегистрированных на вашем компьютере:
$ServerList = dir -recurse SQLSERVER:\SQLRegistration\'Database Engine Server Group'\ | where {$_.Mode -ne "d"}
foreach ($RegisteredSQLs in $ServerList)
{
$dt = invoke-sqlcmd -ServerInstance $RegisteredSQLs.ServerName -database master -Query "SELECT SERVERPROPERTY('servername'), SERVERPROPERTY ('instancename'), value FROM sys.configurations
WHERE name = 'Max Server Memory (MB)'";
echo $dt >> C:\tmp\memory.txt;
}
Обратите внимание, что в данном случае, для аккаунта под которым запускается этот скрипт должен быть создан login на SQL Server’e и ему должно хватать прав на выполнение запроса к sys.configurations. Если вы используете SQL-логины, нужно указать имя пользователя и пароль в параметрах командлета Invoke-Sqlcmd.
А теперь представьте, что вам надо абсолютно одинаково настроить семь серверов, или добавить на них один и тот же логин, или сделать бэкапы всех баз на сервере… Надеюсь, у меня получилось показать, что использование PowerShell, совместно с SQL Server, позволяет значительно облегчить жизнь администратора баз данных.
Ссылки:
- Общие сведения о SQL Server PowerShell, Books Online — msdn.microsoft.com/ru-ru/library/cc281954.aspx
- Использование командлета Invoke-Sqlcmd, Books Online — msdn.microsoft.com/ru-ru/library/cc281720.aspx
- SQL University — sqlchicken.com/sql-university
You can connect to a MySQL/MariaDB database, select data from a table, and add, update, and delete table entries directly from a PowerShell script. In this post, we’ll look at simple ways to run SQL queries against a remote MySQL (MariaDB) database from the PowerShell.
Contents:
- How to Query a MariaDB or MySQL Database from PowerShell
- Running SQL Queries from PowerShell Using the MySQL Connector
First, check that the remote SQL server is accepting remote connections from your host on the default port TCP 3306:
Test-NetConnection mysqlDBserver -port 3306
On the MySQL server, allow users to connect remotely from your IP address or any host (replace IP with %
):
GRANT ALL ON myDB.* to 'dbadmin'@'10.2.1.10' IDENTIFIED BY 'Passw0rd1!' WITH GRANT OPTION;
FLUSH PRIVILEGES;
How to Query a MariaDB or MySQL Database from PowerShell
You can use the SimplySql universal PowerShell module to connect to the MySQL/MariaDB database and run SQL queries. Install this module from the PowerShell Online Gallery:
Install-Module -Name SimplySql
The Open-MySQLConnection
cmdlet is used to connect to the MariaDB/MySQL server and the Invoke-SQLQuery
to execute SQL queries.
Save the db username and password for the MySQL server connection:
$DBUser = "dbadmin"
$DBPassword = ConvertTo-SecureString -String "Passw0rd1!" -AsPlainText -Force
$creds = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $DBUser, $DBPassword
Connect to a MySQL/MariaDB database on a remote server:
$sqlConnect = Open-MySqlConnection -ConnectionName MyDBCon -Server 10.2.1.129 -Database myDB -Port 3306 -Credential $creds -WarningAction SilentlyContinue
Run a parameterized query against the MySQL database:
$cityname="Munich"
$data = Invoke-SqlQuery -query "SELECT * FROM myDB WHERE city like '%$cityname%'"
Insert data into the table:
Invoke-SqlQuery -query "INSERT INTO myDB (name,phone,id,city,email) VALUES ('Alfred','+49-30-054758864',1233,'Munich',[email protected]')"
Update cell value in MySQL table:
Invoke-SqlQuery -query "UPDATE myDB SET city = 'Munich' WHERE ID = 1233"
Close the database connection:
Close-SqlConnection -connectionname MyDBCon
Running SQL Queries from PowerShell Using the MySQL Connector
To connect to the MySQL or MariaDB database server, you can use the official MySQL .NET Connector, which is available for free download from the MySQL website. Download the latest version of the connector and install it on your computer (https://dev.mysql.com/downloads/connector/net/).
It is not necessary to install the MySQL .NET Connector MSI package, just copy the MySql.Data.dll library file to your computer.
The following PowerShell script gets a list of users and their email addresses from Active Directory and writes them to a MySQL database (the Get-ADUser cmdlet is used to list user accounts in AD):
# connecting the MySql.Data.dll library
[void][system.reflection.Assembly]::LoadFrom("C:\Program Files (x86)\MySQL\MySQL Connector NET 8.3.0\MySql.Data.dll")
$mysql_server = "10.2.1.129"
$mysql_user = "dbadmin"
$mysql_password = "Passw0rd1!"
$dbName = "TestDB"
$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
#prepare a list of users from specific OU containing names and e-mail addresses
Import-Module activedirectory
$UserList=Get-ADUser -SearchBase ‘OU=Users,OU=Paris,DC=adatum,DC=com’ -filter * -properties name, EmailAddress
ForEach($user in $UserList)
{
$uname=$user.Name;
$uemail=$user.EmailAddress;
#write the information about each use to the database table
$sql.CommandText = "INSERT INTO users (Name,Email) VALUES ('$uname','$uemail')"
$sql.ExecuteNonQuery()
}
$Reader.Close()
$Connection.Close()
The following script uses an SQL SELECT query to retrieve data from a database table and display it in the PowerShell console.
Set-ExecutionPolicy RemoteSigned
[void][system.reflection.Assembly]::LoadFrom("C:\Program Files (x86)\MySQL\MySQL Connector NET 8.3.0\MySql.Data.dll")
$mysql_server = "10.2.1.129"
$mysql_user = "dbadmin"
$mysql_password = "Passw0rd1!"
$dbName = "TestDB"
$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()