当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 从 PowerShell 运行 MySQL 查询

作者:精品下载站 日期:2024-12-14 22:48:46 浏览:11 分类:玩电脑

从 PowerShell 运行 MySQL 查询


PowerShell 的一项有用功能是可以连接到远程服务器上的数据库,包括 MySQL 数据库。因此,您可以直接从 PowerShell 控制台寻址 MySQL 表来访问数据。在本文中,我们将介绍从 PowerShell 脚本连接到 MySQL DB 的示例以及一些读取/写入数据库表中的数据的命令。为了连接MySQL服务器,我们需要一个特殊的连接器——MySQL .NET Connector,它可以从MySQL官方网站下载。

在撰写本文时,最新的可用连接器版本是 Connector/Net 6.9.9。

注意。不需要安装完整版本的 MySQL .NET Connector,只需将 MySql.Data.dll 复制到您的计算机即可。

下载 mysql-connector-net-6.9.9.msi 并以最小配置安装 MySQL .NET Connector。

[玩转系统] 从 PowerShell 运行 MySQL 查询

提前创建一个要在 MySQL 服务器上使用的数据库。数据库服务器上的所有操作都是从 MySQL CLI 命令提示符执行的,但您可以使用图形工具 phpmyadmin 或任何其他合适的实用程序。

创建aduser数据库:

mysql> CREATE DATABASE aduser;

在 MySQL 服务器上,创建一个具有远程连接 aduser 数据库权限的单独用户。授予该用户从 IP 地址 10.1.1.195 远程连接数据库的权限:

mysql>GRANT ALL PRIVILEGES ON aduser.* TO posh@'10.1.1.195' IDENTIFIED BY 'P@ssw0rd' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

[玩转系统] 从 PowerShell 运行 MySQL 查询

选择创建的数据库:

mysql> USE aduser;

创建最简单的表,由 3 列组成:ID、AD 用户名和电子邮件地址。

mysql> CREATE TABLE users (id INT NOT NULL AUTO_INCREMENT, name VARCHAR(100), email VARCHAR(100), PRIMARY KEY (ID));

返回到服务器,我们将从该服务器连接到 MySQL 数据库。假设,我们希望 AD 用户的所有姓名和电子邮件地址都显示在表中。您可以使用 Get-ADUser cmdlet 获取此信息。

以下 PowerShell 脚本允许连接到数据库并写入从 AD 获取的用户列表及其电子邮件。

Set-ExecutionPolicy RemoteSigned
#connect the library MySql.Data.dll
Add-Type -Path ‘C:\Program Files (x86)\MySQL\MySQL Connector Net 6.9.9\Assemblies\v4.5\MySql.Data.dll'
# database connection string, server — server name, uid - mysql user name, pwd- password, database — name of the database on the server
$Connection = [MySql.Data.MySqlClient.MySqlConnection]@{ConnectionString='server=10.1.1.13;uid=posh;pwd=P@ssw0rd;database=aduser'}
$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()

[玩转系统] 从 PowerShell 运行 MySQL 查询

以下脚本用于读取先前输入到数据库的数据并将其显示在 PowerShell 控制台中。我们显示了包含用户姓名和电子邮件地址的字段:

Set-ExecutionPolicy RemoteSigned
Add-Type -Path ‘C:\Program Files (x86)\MySQL\MySQL Connector Net 6.9.9\Assemblies\v4.5\MySql.Data.dll'
$Connection = [MySql.Data.MySqlClient.MySqlConnection]@{ConnectionString='server=10.1.1.13;uid=posh;pwd=P@ssw0rd;database=aduser'}
$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()

[玩转系统] 从 PowerShell 运行 MySQL 查询

在接下来的文章中,我们将考虑使用 MySQL 数据库从 Windows 事件日志收集和存储信息的情况(使用审核策略和 MSSQL 数据库跟踪文件删除)。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯