(无版本信息可用,可能仅存在于 Git 中)
getSession — 连接到 MySQL 服务器
uri
MySQL 服务器的 URI,例如 mysqlx://user:password@host
。
URI 格式
scheme://[user[:[password]]@]target[:port][?attribute1=value1&attribute2=value2...
scheme
:必需,连接协议
在 mysql_xdevapi 中始终为“mysqlx”(用于 X 协议)
user
:可选,用于身份验证的 MySQL 用户帐户
password
:可选,用于身份验证的 MySQL 用户密码
target
:必需,连接引用的服务器实例
* TCP 连接(主机名、IPv4 地址或 IPv6 地址)
* Unix 套接字路径(本地文件路径)
* Windows 命名管道(本地文件路径)
port
:可选,MySQL 服务器的网络端口。
默认情况下,X 协议的端口为 33060
?attribute=value
:此元素是可选的,并指定一个包含不同选项的数据字典,包括
与加密连接相关的 auth
(身份验证机制)属性。有关其他信息,请参阅 » 加密连接的命令选项。支持以下“auth”值:plain
、mysql41
、external
和 sha256_mem
。
connect-timeout
属性影响连接,而不影响后续操作。无论是在单个主机还是多个主机上,它都针对每个连接设置。
传入一个正整数以秒为单位定义连接超时,或传入 0(零)以禁用超时(无限)。未定义 connect-timeout 使用默认值 10。
相关地,可以设置 MYSQLX_CONNECTION_TIMEOUT(以秒为单位的超时)和 MYSQLX_TEST_CONNECTION_TIMEOUT(在运行测试时使用)环境变量,并将其用作 URI 中的 connect-timeout。connect-timeout URI 选项优先于这些环境变量。
可选的 compression
属性接受以下值:preferred
(客户端与服务器协商以找到支持的算法;如果未找到相互支持的算法,则连接未压缩)、required
(与“preferred”类似,但如果未找到相互支持的算法,则连接将终止)或 disabled
(连接未压缩)。默认为 preferred
。
此选项在版本 8.0.20 中添加。
可选的 compression-algorithms
属性定义所需的压缩算法(及其首选使用顺序):zstd_stream
(别名:zstd)、lz4_message
(别名:lz4)或 deflate_stream
(别名:deflate 或 zlib)。默认情况下,使用的顺序(取决于系统可用性)为 lz4_message、zstd_stream,然后是 deflate_stream。例如,传入 compression-algorithms=[lz4,zstd_stream] 将在可用时使用 lz4,否则将使用 zstd_stream。如果两者都不可用,则行为取决于压缩值,例如,如果 compression=required,则它将失败并出现错误。
此选项在版本 8.0.22 中添加。
示例 #1 URI 示例
mysqlx://foobar
mysqlx://root@localhost?socket=%2Ftmp%2Fmysqld.sock%2F
mysqlx://foo:bar@localhost:33060
mysqlx://foo:bar@localhost:33160?ssl-mode=disabled
mysqlx://foo:bar@localhost:33260?ssl-mode=required
mysqlx://foo:bar@localhost:33360?ssl-mode=required&auth=mysql41
mysqlx://foo:bar@(/path/to/socket)
mysqlx://foo:bar@(/path/to/socket)?auth=sha256_mem
mysqlx://foo:bar@[localhost:33060, 127.0.0.1:33061]
mysqlx://foobar?ssl-ca=(/path/to/ca.pem)&ssl-crl=(/path/to/crl.pem)
mysqlx://foo:bar@[localhost:33060, 127.0.0.1:33061]?ssl-mode=disabled
mysqlx://foo:bar@localhost:33160/?connect-timeout=0
mysqlx://foo:bar@localhost:33160/?connect-timeout=10&compression=required
mysqlx://foo:bar@localhost:33160/?connect-timeout=10&compression=required&compression-algorithms=[lz4,zstd_stream]
有关相关信息,请参阅 MySQL Shell 的 » 使用 URI 字符串连接。
一个 Session 对象。
连接失败会抛出一个 Exception。
示例 #2 mysql_xdevapi\getSession() 示例
<?php
尝试 {
$session = mysql_xdevapi\getSession("mysqlx://user:password@host");
} 捕获 (Exception $e) {
die("无法建立连接: " . $e->getMessage());
}
$schemas = $session->getSchemas();
print_r($schemas);
$mysql_version = $session->getServerVersion();
print_r($mysql_version);
var_dump($collection->find("name = 'Alfred'")->execute()->fetchOne());
?>
以上示例将输出类似以下内容
Array ( [0] => mysql_xdevapi\Schema Object ( [name] => helloworld ) [1] => mysql_xdevapi\Schema Object ( [name] => information_schema ) [2] => mysql_xdevapi\Schema Object ( [name] => mysql ) [3] => mysql_xdevapi\Schema Object ( [name] => performance_schema ) [4] => mysql_xdevapi\Schema Object ( [name] => sys ) ) 80012 array(4) { ["_id"]=> string(28) "00005ad66abf0001000400000003" ["age"]=> int(42) ["job"]=> string(7) "Butler" ["name"]=> string(4) "Alfred" }