Mysql8.4参考手册走读(二)

第 7 章MySQL服务器管理

服务器配置验证

MySQL提供了一个名为--validate-config的选项,该选项允许用户在正常操作模式之外检查MySQL服务器的启动配置中是否存在问题。使用此选项时,如果配置没有问题,服务器将终止运行并返回退出代码0;如果发现配置错误,服务器将显示诊断消息并返回退出代码1。

例如,如果你运行一个包含未知选项的命令,如--no-such-option,服务器会返回一个错误消息,并返回退出代码1:

mysqld --validate-config --no-such-option

如果你的命令产生了警告,例如关于未识别的布尔值,这些警告会根据log_error_verbosity的值显示,但不会阻止验证过程,并且退出代码将是0:

mysqld --validate-config --log_error_verbosity=2 --read-only=s --transaction_read_only=s

如果命令同时产生警告和错误,那么错误消息和警告都会显示,并且退出代码为1:

mysqld --validate-config --log_error_verbosity=2 --no-such-option --read-only=s --transaction_read_only=s

--validate-config选项仅检查服务器能够进行的配置,而不会初始化存储引擎或其他插件和组件。因此,与这些未初始化的子系统相关的配置选项不会被验证。

这个选项特别适用于升级后的场景,可以检查旧版服务器使用的任何选项是否在新版本中已被弃用或标记为过时。例如,假设你从MySQL 5.7升级到8.4,并且旧配置中包含已删除的系统变量,使用--validate-config将会显示这些变化。

可以使用--defaults-file选项与--validate-config结合使用,以便只验证特定文件中的选项。但是,--defaults-file必须是命令行上的第一个选项,否则会产生错误消息。

服务器 SQL 模式

MySQL服务器可以在不同的SQL模式下运行,并且可以应用这些模式 对于不同的客户端不同,具体取决于sql_mode系统变量的值。DBA 可以设置全局SQL模式以匹配站点服务器操作要求,并且每个应用程序都可以设置其会话SQL模式根据自己的要求。

模式会影响MySQL支持的SQL语法和数据验证检查的执行情况。这使得在不同的环境中使用MySQL变得更加容易,并将MySQL与其他数据库服务器一起使用。

要设置SQL模式,可以使用以下方法:

  1. 在服务器启动时设置SQL模式:在命令行中使用 --sql-mode=“modes”选项,或在选项文件中使用 sql-mode=“modes”,例如(Unix操作系统)或(Windows)。modes是不同模式的列表,用逗号分隔。

  2. 要在运行时更改SQL模式,请使用SET语句:

    • SET GLOBAL sql_mode = ‘modes’;
    • SET SESSION sql_mode = ‘modes’;
      设置变量需要SYSTEM_VARIABLES_ADMIN权限(或已弃用的SUPER权限)并影响连接的所有客户端的操作从那时起。设置变量仅影响当前会话。每个客户端都可以更改其会话值sql_mode为任何值。GLOBAL SESSION
  3. 要确定当前全局或会话sql_mode设置,请选择其价值:

    • SELECT @@GLOBAL.sql_mode;
    • SELECT @@SESSION.sql_mode;

MySQL 8支持多种SQL模式,以下是一些常见的SQL模式:

  1. ANSI_QUOTES:启用ANSI引用符(双引号)而不是MySQL的反引号。
  2. PIPES_AS_CONCAT:将管道符(|)视为字符串连接操作符,而不是OR运算符。
  3. IGNORE_SPACE:忽略SQL语句中的空格。
  4. NO_AUTO_CREATE_USER:禁止自动创建用户账户。
  5. NO_BACKSLASH_ESCAPES:禁用反斜杠转义字符。
  6. STRICT_TRANS_TABLES:在事务中遇到无效或丢失的值时,使事务回滚。
  7. SQL_MODE=‘STRICT_ALL_TABLES’:对所有表执行严格模式检查。
  8. NO_ZERO_IN_DATE:不允许日期中的月份和天数为零。
  9. NO_ZERO_DATE:不允许日期为零值。
  10. INVALID_DATES:将无效日期视为NULL。
  11. ERROR_FOR_DIVISION_BY_ZERO:除以零时产生错误。
  12. NO_ENGINE_SUBSTITUTION:不允许在查询中使用未定义的存储引擎。
  13. PERSIST:持久化设置,即使重启服务器也不会丢失。

要查看当前MySQL实例的所有SQL模式,可以使用以下查询:

SELECT @@GLOBAL.sql_mode;

或者查看特定会话的SQL模式:

SELECT @@SESSION.sql_mode;

Mysql服务器日志

选择常规查询日志和慢速查询日志输出目标

要将常规查询日志条目写入日志表,并且日志文件,可以使用以下命令:

mysqld --log_output=TABLE,FILE --general_log

仅将常规查询日志条目和慢速查询日志条目写入日志表,可以使用以下命令:

mysqld --log_output=TABLE --general_log --slow_query_log

要仅将慢速查询日志条目写入日志文件,可以使用以下命令:

mysqld --log_output=FILE --slow_query_log

在运行时,可以通过以下方式启用或禁用常规查询日志和慢速查询日志:

SET GLOBAL general_log = 'ON';
SET GLOBAL slow_query_log = 'ON';

或者

SET GLOBAL general_log = 'OFF';
SET GLOBAL slow_query_log = 'OFF';

错误日志

错误日志文件刷新和重命名的步骤如下:

  1. 首先,手动重命名错误日志文件。例如,如果错误日志文件名为host_name.err,可以使用以下命令重命名文件并创建一个新的文件:
mv host_name.err host_name.err-old

在Windows上,使用rename而不是mv

  1. 然后,使用mysqladmin flush-logs error命令刷新错误日志。这将关闭并重新打开任何正在写入的错误日志文件。

  2. 最后,将重命名后的错误日志文件移动到备份目录。例如:

mv host_name.err-old backup-directory

如果在刷新错误日志时服务器未写入命名错误日志文件,则无需重命名日志文件。在这种情况下,只需执行第2步即可刷新错误日志。

二进制日志

二进制日志包含对数据库表的更改描述,例如表创建操作或数据修改。二进制日志还包括可能已经更改的语句(例如,没有任何匹配行的DELETE),除非使用基于行的日志记录。二进制日志还包含有关每个语句花费更新数据的时间的信息。

二进制日志有两个重要用途:

对于复制,源服务器上的二进制日志提供要发送到副本的数据更改的记录。源将其二进制日志中包含的信息发送到它的副本,这些副本再现这些事务以进行对源所做的相同数据更改。请参见第19.2节 “复制实现”。

某些数据恢复操作需要使用二进制文件日志。还原备份后,将备份后记录的二进制日志是重新执行。这些事件使数据库从备份点。请参见第9.5节 “时间点(增量)恢复”。

二进制日志不用于不修改数据的语句(如 SELECT 或 SHOW)。自记录所有语句(例如,识别问题查询),使用常规查询日志。请参见第7.4.3节 “常规查询日志”。

运行启用二进制日志记录的服务器可以稍微慢一点。但是,二进制登录的好处使您能够设置复制和还原操作通常超过这种轻微的性能下降。

二进制日志可灵活应对意外停止。仅完成的事件或事务将被记录或回读。

写入二进制日志的语句中的密码由服务器不会以纯文本形式出现。另外请参见第8.1.2.3节 “密码和日志记录”。

MySQL二进制日志文件和中继日志文件可以加密,帮助保护这些文件和潜在的敏感数据包含在其中,以免被外部攻击者滥用,也来自操作系统用户未经授权的查看它们的存储位置。您可以通过在MySQL服务器上启用加密将binlog_encryption系统变量设置为。欲了解更多信息,请参见第19.3.2节 “加密二进制日志文件和中继日志文件”。

慢速查询日志

慢速查询日志是MySQL数据库中用于记录执行时间较长的SQL语句的一种日志。这些语句通常需要优化以提高性能。慢速查询日志可以帮助数据库管理员找到需要优化的查询,从而提高整个数据库系统的性能。

慢速查询日志的参数包括:

  1. long_query_time:指定记录慢查询的时间阈值,单位为秒。默认值为10秒。
  2. min_examined_row_limit:指定记录慢查询所需的最小检查行数。默认值为0,表示不限制。
  3. log_slow_admin_statements:是否记录管理语句,如ALTER TABLE、ANALYZE TABLE等。默认值为OFF。
  4. log_queries_not_using_indexes:是否记录未使用索引进行查找的查询。默认值为OFF。
  5. slow_query_log:是否启用慢查询日志。默认值为OFF。
  6. slow_query_log_file:指定慢查询日志文件的名称。默认值为host_name-slow.log。
  7. log_output:指定慢查询日志和常规查询日志的输出目标。默认值为FILE。
  8. log_timestamps:控制消息中时间戳的时区。默认值为UTC。
  9. log_slow_replica_statements:是否在副本上记录复制的查询。默认值为OFF。
  10. log_slow_extra:是否记录额外的信息,如线程ID、错误号等。默认值为OFF。

要处理慢速查询日志文件并总结其内容,可以使用mysqldumpslow工具。例如,要查看慢速查询日志文件中的前10条最慢的查询,可以运行以下命令:

mysqldumpslow -s t -t 10 /path/to/your/slow-query.log

这将按照查询时间(t)对慢查询日志进行排序,并显示前10条最慢的查询。

第 8 章安全

访问控制和帐户管理

授权表概述
这些数据库表包含 grant 信息:mysql

用户: 用户帐户、静态全局权限等 nonprivilege 列。

global_grants: 动态全局权限。

分贝: 数据库级权限。

tables_priv: 表级权限。

columns_priv: 列级权限。

procs_priv: 存储过程和函数权限。

proxies_priv: 代理用户权限。

default_roles: 默认用户角色。

role_edges: 角色子图的边缘。

password_history: 密码更改历史记录。

有关静态和动态之间差异的信息 全局权限,请参阅静态权限与动态权限。

在 MySQL 8.4 中,授权表使用存储引擎并且是事务性的。 在 MySQL 8.4 之前,授权表使用存储引擎,并且是 非交易性。授权表存储引擎的此更改 启用对 帐户管理语句,例如 CREATE USER 或 GRANT。以前,一个 命名多个用户的帐户管理语句可以 对某些用户来说成功,对其他用户来说失败。现在,每个语句 是事务性的,并且对所有指定用户都成功,或者 回滚,如果发生任何错误,则不起作用。InnoDBMyISAM

每个授权表都包含范围列和权限列:

范围列确定表中每一行的作用域; 即应用该行的上下文。例如 包含 和 值的表行 并适用于身份验证 客户端从主机到服务器建立的连接,该客户端指定 用户名 。同样,当从主机连接以访问数据库时,将应用具有 、 和 列值的表行。和 表包含作用域列 指示每个表或表/列组合 行适用。作用域列 指示每行应用的存储例程。userHostUser’h1.example.net’‘bob’h1.example.netbobdbHostUserDb’h1.example.net’‘bob’'reports’bobh1.example.netreportstables_privcolumns_privprocs_priv

权限列指示表行的权限 拨款;也就是说,它允许哪些操作 执行。服务器将 各种授权表,形成对 用户的权限。第 8.2.7 节 “访问控制,第 2 阶段:请求验证”, 描述了这方面的规则。

此外,授权表可能包含用于目的的列 范围或权限评估除外。

服务器按以下方式使用授权表:

表范围列确定 是拒绝还是允许传入连接。为 允许的连接,则表中授予的任何权限都表示用户的静态 全局权限。此表中授予的任何权限 应用于服务器上的所有数据库。useruser

谨慎
因为任何静态全局权限都被视为 所有数据库的特权,任何静态全局特权 使用户能够使用 SHOW DATABASES 或按 检查 SCHEMATA 表 的 ,数据库除外 在数据库级别受到部分限制 撤销。INFORMATION_SCHEMA

下表列出了当前 为用户帐户分配动态全局权限。 对于每一行,范围列确定哪个用户具有 在“权限”列中命名的权限。global_grants

表范围列确定 哪些用户可以从哪些主机访问哪些数据库。这 权限列确定允许的操作。一个 在数据库级别授予的特权适用于 数据库和数据库中的所有对象,例如表 和存储的程序。db

和表与表类似,但粒度更细:它们 在表和列级别应用,而不是在 数据库级别。在表级别授予的特权 适用于表及其所有列。特权 在列级别授予仅适用于特定的 列。tables_privcolumns_privdb

该表适用于存储的 例程(存储过程和函数)。特权 在常规级别授予仅适用于单个 过程或功能。procs_priv

该表指出了哪个 用户可以充当其他用户的代理,以及用户是否 可以授予 PROXY 权限 给其他用户。proxies_priv

和表包含信息 关于角色关系。default_rolesrole_edges

该表保留了 以前选择的密码以启用限制 密码重用。请参见第 8.2.15 节 “密码管理”。password_history

服务器将授权表的内容读入内存 当它开始时。您可以通过发出以下命令来告诉它重新加载表 FLUSH PRIVILEGES 语句或 执行 mysqladmin flush-privileges 或 mysqladmin reload 命令。对 授权表如第 8.2.13 节 “权限更改生效时”中所述生效。

修改帐户时,最好验证一下 您的更改具有预期的效果。检查权限 对于给定帐户,请使用 SHOW GRANTS 声明。例如,要确定 授予具有用户名和 和 的主机名值 ,使用以下语句:bobpc84.example.com

SHOW GRANTS FOR ‘bob’@‘pc84.example.com’;
要显示帐户的非特权属性,请使用 SHOW CREATE USER:

SHOW CREATE USER ‘bob’@‘pc84.example.com’;

mysql加密连接

在MySQL中配置加密连接涉及几个步骤,包括服务器端和客户端的配置。以下是这些步骤的详细说明:

服务器端启动配置

  1. 启用require_secure_transport系统变量: 这要求所有客户端使用加密连接进行通信。
  2. 指定证书和密钥文件:
    • ssl_ca: CA证书文件的路径。
    • ssl_cert: 服务器公钥证书文件的路径。
    • ssl_key: 服务器私钥文件的路径。
  3. 自动发现证书和密钥文件: 如果服务器在数据目录中找到名为ca.pem, server-cert.pem, 和 server-key.pem的有效证书和密钥文件,它将支持客户端的加密连接。
  4. 其他系统变量:
    • ssl_cipher: 允许用于连接加密的密码列表。
    • ssl_crl: 包含证书吊销列表的文件的路径。
    • tls_versiontls_ciphersuites: 允许的加密协议和密码套件。

客户端配置

  1. SSL模式选项:
    • --ssl-mode=PREFERRED: 默认设置,尝试建立加密连接,如果失败则回退到未加密连接。
    • --ssl-mode=REQUIRED: 需要加密连接,如果无法建立则失败。
    • --ssl-mode=DISABLED: 使用未加密连接。
    • --ssl-mode=VERIFY_CA--ssl-mode=VERIFY_IDENTITY: 需要加密连接,并验证服务器的CA证书和主机名。
  2. 指定证书和密钥文件:
    • --ssl-ca: CA证书文件的路径。
    • --ssl-cert: 客户端公钥证书文件的路径。
    • --ssl-key: 客户端私钥文件的路径。
  3. 其他选项:
    • --ssl-cipher: 允许用于连接加密的密码列表。
    • --ssl-crl: 包含证书吊销列表的文件的路径。
    • --tls-version, --tls-ciphersuites: 允许的加密协议和密码套件。

注意事项

  • 使用自签名证书时,主机名身份验证不适用,因为自签名证书不包含服务器名称作为公用名值。
  • 如果帐户有特定的加密要求,客户端可能需要指定额外的选项来建立加密连接。

通过正确配置这些参数,可以确保MySQL服务器和客户端之间的通信是安全的,使用加密连接来保护数据不被未授权访问。

第 9 章 备份和恢复

备份和恢复类型

物理备份和逻辑备份是两种不同的数据库备份方法。物理备份是指将数据库的物理文件(如数据文件、日志文件等)复制到另一个位置,而逻辑备份是指通过查询数据库结构信息和内容信息来生成备份文件。这两种备份方法各有优缺点,具体取决于用户的需求和数据库的特点。

物理备份的优点包括速度快、备份文件紧凑以及可以移植到具有相同或相似硬件特性的系统。然而,物理备份需要数据库处于离线状态,且只能针对整个数据库进行备份。此外,物理备份可能无法恢复某些特定类型的数据,如存储在内存中的数据。

逻辑备份的优点包括可以针对整个数据库或特定表进行备份,且可以在数据库运行时进行备份。逻辑备份还可以生成易于理解和编辑的文件,便于在不同环境中恢复数据。然而,逻辑备份的速度较慢,且输出文件通常比物理备份文件大。

在选择备份方法时,用户需要权衡备份速度、恢复能力、文件大小等因素。对于大型数据库或需要快速恢复的场景,物理备份可能是更好的选择;而对于小型数据库或需要灵活备份的场景,逻辑备份可能更合适。此外,用户还可以结合使用这两种备份方法,以满足不同场景的需求。

数据库备份方法

mysqldump 是一个用于备份 MySQL 数据库的命令行工具。它可以将数据库的内容导出为 SQL 语句,以便在需要时重新创建数据库。默认情况下,mysqldump 将信息写入 SQL 语句添加到标准输出。您可以将其输出保存到文件中,以便稍后使用。

以下是一些常用的 mysqldump 命令示例:

  1. 转储所有数据库到一个名为 dump.sql 的文件:
$> mysqldump --all-databases > dump.sql
  1. 仅转储特定数据库(例如 db1、db2 和 db3)到一个名为 dump.sql 的文件:
$> mysqldump --databases db1 db2 db3 > dump.sql
  1. 转储单个数据库(例如 test)到一个名为 dump.sql 的文件:
$> mysqldump --databases test > dump.sql

或者省略 --databases 选项:

$> mysqldump test > dump.sql
  1. 仅从数据库中转储特定表(例如 t1、t3 和 t7):
$> mysqldump test t1 t3 t7 > dump.sql

在使用 mysqldump 时,还可以使用一些选项来控制输出内容,例如 --add-drop-database 选项会在每个数据库的转储输出之前添加一个 DROP DATABASE 语句,以确保在重新加载转储文件时删除每个数据库。

数据库恢复方法

要还原二进制日志中的数据,需要知道二进制日志文件的名称和位置。默认情况下,服务器会在数据目录中创建二进制日志文件,但可以使用 --log-bin 选项指定其他路径。查看所有二进制日志文件的列表,可以使用以下命令:

mysql> SHOW BINARY LOGS;

要确定当前二进制日志文件的名称,可以使用以下命令:

mysql> SHOW BINARY LOG STATUS;

mysqlbinlog 实用程序可以将二进制日志文件中的事件从二进制格式转换为文本格式,以便查看或应用。根据事件的时间或位置选择二进制日志部分,可以使用 mysqlbinlog 的选项。

应用二进制日志中的事件会导致数据恢复。这使您可以在给定的时间跨度内恢复数据更改。要将二进制日志文件中的事件应用于数据库,可以使用以下命令:

$> mysqlbinlog binlog_files | mysql -u root -p

如果二进制日志文件已加密,可以使用 --read-from-remote-server 选项从服务器读取它们:

$> mysqlbinlog --read-from-remote-server --host=host_name --port=3306 --user=root --password --ssl-mode=required binlog_files | mysql -u root -p

当您需要确定事件时间或位置以执行事件时,可以将 mysqlbinlog 输出发送到寻呼程序:

$> mysqlbinlog binlog_files | more

或者将输出保存在文件中,然后在文本编辑器中编辑文件:

$> mysqlbinlog binlog_files > tmpfile
$> ... edit tmpfile ...

编辑文件后,可以使用以下命令应用内容:

$> mysql -u root -p < tmpfile

如果您有多个二进制日志文件要在MySQL服务器上应用,可以使用单个连接处理所有二进制日志文件:

$> mysqlbinlog binlog.000001 binlog.000002 | mysql -u root -p

另一种方法是将所有二进制日志写入单个文件,然后处理该文件:

$> mysqlbinlog binlog.000001 > /tmp/statements.sql
$> mysqlbinlog binlog.000002 >> /tmp/statements.sql
$> mysql -u root -p -e "source /tmp/statements.sql"

在还原数据库时,需要关注二进制日志文件的最后一个位置,这个位置将在恢复完成后显示在服务器上。然而,这个位置不一定准确,因为可能存在DDL事件和非InnoDB更改发生在所显示的时间之后。因此,建议使用备份和还原工具来获取准确的二进制日志位置。

如果需要恢复到特定的时间点,可以使用mysqlbinlog实用程序来查看二进制日志内容。通过指定–start-datetime和–stop-datetime选项,可以查看特定时间段内的事件。例如:

$> mysqlbinlog --start-datetime="2020-03-11 20:05:00" 
                   --stop-datetime="2020-03-11 20:08:00" --verbose 
         /var/lib/mysql/bin.123456 | grep -C 15 "DROP TABLE"

从输出中可以找到感兴趣的事件及其在二进制日志中的位置。例如,如果找到了一个DROP TABLE语句,它发生在日志位置232之后,并且在语句之后的位置355。

要将二进制日志文件中的事件应用到服务器,可以使用以下命令:

$> mysqlbinlog --start-position=155 --stop-position=232 /var/lib/mysql/bin.123456 
         | mysql -u root -p

这个命令将从开始位置恢复所有事务,直到停止位置之前。恢复的数据和相关的MySQL日志将反映事务的原始执行时间。

如果需要在感兴趣的时间点之后重新执行所有语句,可以使用以下命令:

$> mysqlbinlog --start-position=355 /var/lib/mysql/bin.123456 
         | mysql -u root -p

这个命令将从指定的位置开始,将所有后续事件应用于服务器,但跳过了之前选择的事件。

MySQL 5.1参考手册 目录 前言 1. 一般信息 1.1. 关于本手册 1.2. 本手册采用的惯例 1.3. MySQL AB概述 1.4. MySQL数据库管理系统概述 1.4.1. MySQL的历史 1.4.2. MySQL的的主要特性 1.4.3. MySQL稳定性 1.4.4. MySQL表最大能达到多少 1.4.5. 2000年兼容性 1.5. MaxDB数据库管理系统概述 1.5.1. 什么是MaxDB? 1.5.2. MaxDB的历史 1.5.3. MaxDB的特性 1.5.4. 许可和支持 1.5.5. MaxDB和MySQL之间的特性差异 1.5.6. MaxDB和MySQL之间的协同性 1.5.7. 与MaxDB有关的链接 1.6. MySQL发展大事记 1.6.1. MySQL 5.1的新特性 1.7. MySQL信息源 1.7.1. MySQL邮件列表 1.7.2. IRC(在线聊天系统)上的MySQL社区支持 1.7.3. MySQL论坛上的MySQL社区支持 1.8. MySQL标准的兼容性 1.8.1. MySQL遵从的标准是什么 1.8.2. 选择SQL模式 1.8.3. 在ANSI模式下运行MySQL 1.8.4. MySQL对标准SQL的扩展 1.8.5. MySQL与标准SQL的差别 1.8.6. MySQL处理约束的方式 2. 安装MySQL 2.1. 一般安装问题 2.1.1. MySQL支持的操作系统 2.1.2. 选择要安装的MySQL分发版 2.1.3. 怎样获得MySQL 2.1.4. 通过MD5校验和或GnuPG验证软件包的完整性 2.1.5. 安装布局 2.2. 使用进制分发版的标准MySQL安装 2.3. 在Windows上安装MySQL 2.3.1. Windows系统要求 2.3.2. 选择安装软件包 2.3.3. 用自动安装器安装MySQL 2.3.4. 使用MySQL安装向导 2.3.5. 使用配置向导 2.3.6. 通过非安装Zip文件安装MySQL 2.3.7. 提取安装档案文件 2.3.8. 创建选项文件 2.3.9. 选择MySQL服务器类型 2.3.10. 首次启动服务器 2.3.11. 从Windows命令行启动MySQL 2.3.12. 以Windows服务方式启动MySQL 2.3.13. 测试MySQL安装 2.3.14. 在Windows环境下对MySQL安装的故障诊断与排除 2.3.15. 在Windows下升级MySQL 2.3.16. Windows版MySQL同Unix版MySQL对比 2.4. 在Linux下安装MySQL 2.5.在Mac OS X中安装MySQL 2.6. 在NetWare中安装MySQL 2.7. 在其它类Unix系统中安装MySQL 2.8. 使用源码分发版安装MySQL 2.8.1. 源码安装概述 2.8.2. 典型配置选项 2.8.3. 从开发源码树安装 2.8.4. 处理MySQL编译问题 2.8.5. MIT-pthreads注意事项 2.8.6. 在Windows下从源码安装MySQL 2.8.7. 在Windows下编译MySQL客户端 2.9. 安装后的设置和测试 2.9.1. Windows下安装后的过程 2.9.2. Unix下安装后的过程 2.9.3. 使初始MySQL账户安全 2.10. 升级MySQL 2.10.1. 从5.0版升级 2.10.2. 升级授权表 2.10.3. 将MySQL数据库拷贝到另一台机器 2.11. 降级MySQL 2.12. 具体操作系统相关的注意事项 2.12.1. Linux注意事项 2.12.2. Mac OS X注意事项 2.12.3. Solaris注意事项 2.12.4. BSD注意事项 2.12.5. 其它Unix注意事项 2.12.6. OS/2注意事项 2.13. Perl安装注意事项 2.13.1. 在Unix中安装Perl 2.13.2. 在Windows下安装ActiveState Perl 2.13.3. 使用Perl DBI/DBD接口的问题 3. 教程 3.1. 连接与断开服务器 3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 3.3.2. 创建表 3.3.3. 将数据装入表中 3.3.4. 从表检索信息 3.4. 获得数据库和表的信息 3.5. 在批处理模式下使用mysql 3.6. 常用查询的例子 3.6.1. 列的最大值 3.6.2. 拥有某个列的最大值的行 3.6.3. 列的最大值:按组 3.6.4. 拥有某个字段的组间最大值的行 3.6.5. 使用用户变量 3.6.6. 使用外键 3.6.7. 根据两个键搜索 3.6.8. 根据天计算访问量 3.6.9. 使用AUTO_INCREMENT 3.7. 孪生项目的查询 3.7.1. 查找所有未分发的孪生项 3.7.2. 显示孪生对状态的表 3.8. 与Apache一起使用MySQL 4. MySQL程序概述 4.1. MySQL程序概述 4.2. 调用MySQL程序 4.3. 指定程序选项 4.3.1. 在命令行上使用选项 4.3.2. 使用选项文件 4.3.3. 用环境变量指定选项 4.3.4. 使用选项设置程序变量 5. 数据库管理 5.1. MySQL服务器服务器启动脚本 5.1.1. 服务器端脚本和实用工具概述 5.1.2. mysqld-max扩展MySQL服务器 5.1.3. mysqld_safe:MySQL服务器启动脚本 5.1.4. mysql.server:MySQL服务器启动脚本 5.1.5. mysqld_multi:管理多个MySQL服务器的程序 5.2. mysqlmanager:MySQL实例管理器 5.2.1. 用MySQL实例管理器启动MySQL服务器 5.2.2. 连接到MySQL实例管理器并创建用户账户 5.2.3. MySQL实例管理器命令行选项 5.2.4. MySQL实例管理器配置文件 5.2.5. MySQL实例管理器识别的命令 5.3. mysqld:MySQL服务器 5.3.1. mysqld命令行选项 5.3.2. SQL服务器模式 5.3.3. 服务器系统变量 5.3.4. 服务器状态变量 5.4. mysql_fix_privilege_tables:升级MySQL系统表 5.5. MySQL服务器关机进程 5.6. 一般安全问题 5.6.1. 通用安全指南 5.6.2. 使MySQL在攻击者面前保持安全 5.6.3. Mysqld安全相关启动选项 5.6.4. LOAD DATA LOCAL安全问题 5.7. MySQL访问权限系统 5.7.1. 权限系统的作用 5.7.2. 权限系统工作原理 5.7.3. MySQL提供的权限 5.7.4. 与MySQL服务器连接 5.7.5. 访问控制, 阶段1:连接核实 5.7.6. 访问控制, 阶段2:请求核实 5.7.7. 权限更改何时生效 5.7.8. 拒绝访问错误的原因 5.7.9. MySQL 4.1中的密码哈希处理 5.8. MySQL用户账户管理 5.8.1. MySQL用户名和密码 5.8.2. 向MySQL增加新用户账户 5.8.3. 从MySQL删除用户账户 5.8.4. 限制账户资源 5.8.5. 设置账户密码 5.8.6. 使你的密码安全 5.8.7. 使用安全连接 5.9. 备份与恢复 5.9.1. 数据库备份 5.9.2. 示例用备份与恢复策略 5.9.3. 自动恢复 5.9.4. 表维护和崩溃恢复 5.9.5. myisamchk:MyISAM表维护实用工具 5.9.6. 建立表维护计划 5.9.7. 获取关于表的信息 5.10. MySQL本地化和国际应用 5.10.1. 数据和排序用字符集 5.10.2. 设置错误消息语言 5.10.3. 添加新的字符集 5.10.4. 字符定义数组 5.10.5. 字符串比较支持 5.10.6. 多字节字符支持 5.10.7. 字符集问题 5.10.8. MySQL服务器时区支持 5.11. MySQL日志文件 5.11.1. 错误日志 5.11.2. 通用查询日志 5.11.3. 进制日志 5.11.4. 慢速查询日志 5.11.5. 日志文件维护 5.12. 在同一台机器上运行多个MySQL服务器 5.12.1. 在Windows下运行多个服务器 5.12.2. 在Unix中运行多个服务器 5.12.3. 在多服务器环境中使用客户端程序 5.13. MySQL查询高速缓冲 5.13.1. 查询高速缓冲如何工作 5.13.2. 查询高速缓冲SELECT选项 5.13.3. 查询高速缓冲配置 5.13.4. 查询高速缓冲状态和维护 6. MySQL中的复制 6.1. 复制介绍 6.2. 复制实施概述 6.3. 复制实施细节 6.3.1. 复制主线程状态 6.3.2. 复制从I/O线程状态 6.3.3. 复制从SQL线程状态 6.3.4. 复制传递和状态文件 6.4. 如何设置复制 6.5. 不同MySQL版本之间的复制兼容性 6.6. 升级复制设置 6.6.1. 将复制升级到5.0版 6.7. 复制特性和已知问题 6.8. 复制启动选项 6.9. 复制FAQ 6.10. 复制故障诊断与排除 6.11. 通报复制缺陷 6.12. 多服务器复制中的Auto-Increment 7. 优化 7.1. 优化概述 7.1.1. MySQL设计局限与折衷 7.1.2. 为可移植性设计应用程序 7.1.3. 我们已将MySQL用在何处? 7.1.4. MySQL基准套件 7.1.5. 使用自己的基准 7.2. 优化SELECT语句和其它查询 7.2.1. EXPLAIN语法(获取SELECT相关信息) 7.2.2. 估计查询性能 7.2.3. SELECT查询的速度 7.2.4. MySQL怎样优化WHERE子句 7.2.5. 范围优化 7.2.6. 索引合并优化 7.2.7. MySQL如何优化IS NULL 7.2.8. MySQL如何优化DISTINCT 7.2.9. MySQL如何优化LEFT JOIN和RIGHT JOIN 7.2.10. MySQL如何优化嵌套Join 7.2.11. MySQL如何简化外部联合 7.2.12. MySQL如何优化ORDER BY 7.2.13. MySQL如何优化GROUP BY 7.2.14. MySQL如何优化LIMIT 7.2.15. 如何避免表扫描 7.2.16. INSERT语句的速度 7.2.17. UPDATE语句的速度 7.2.18. DELETE语句的速度 7.2.19. 其它优化技巧 7.3. 锁定事宜 7.3.1. 锁定方法 7.3.2. 表锁定事宜 7.4. 优化数据库结构 7.4.1. 设计选择 7.4.2. 使你的数据尽可能小 7.4.3. 列索引 7.4.4. 多列索引 7.4.5. MySQL如何使用索引 7.4.6. MyISAM键高速缓冲 7.4.7. MyISAM索引统计集合 7.4.8. MySQL如何计算打开的表 7.4.9. MySQL如何打开和关闭表 7.4.10. 在同一个数据库中创建多个表的缺陷 7.5. 优化MySQL服务器 7.5.1. 系统因素和启动参数的调节 7.5.2. 调节服务器参数 7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用内存 7.5.6. MySQL如何使用DNS 7.6. 磁盘事宜 7.6.1. 使用符号链接 8. 客户端和实用工具程序 8.1. 客户端脚本和实用工具概述 8.2. myisampack:生成压缩、只读MyISAM表 8.3. mysqlMySQL命令行工具 8.3.1. 选项 8.3.2. mysql命令 8.3.3. 怎样从文本文件执行SQL语句 8.3.4. mysql技巧 8.4. mysqlaccess:用于检查访问权限的客户端 8.5. mysqladmin:用于管理MySQL服务器的客户端 8.6. mysqlbinlog:用于处理进制日志文件的实用工具 8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. mysqlshow-显示数据库、表和列信息 8.12. myisamlog:显示MyISAM日志文件内容 8.13. perror:解释错误代码 8.14. replace:字符串替换实用工具 8.15. mysql_zap:杀死符合某一模式的进程 9. 语言结构 9.1. 文字值 9.1.1. 字符串 9.1.2. 数值 9.1.3. 十六进制值 9.1.4. 布尔值 9.1.5. 位字段值 9.1.6. NULL值 9.2. 数据库、表、索引、列和别名 9.2.1. 识别符限制条件 9.2.2. 识别符大小写敏感性 9.3. 用户变量 9.4. 系统变量 9.4.1. 结构式系统变量 9.5. 注释语法 9.6. MySQL中保留字的处理 10. 字符集支持 10.1. 常规字符集和校对 10.2. MySQL中的字符集和校对 10.3. 确定默认字符集和校对 10.3.1. 服务器字符集和校对 10.3.2. 数据库字符集和校对 10.3.3. 表字符集和校对 10.3.4. 列字符集和校对 10.3.5. 字符集和校对分配示例 10.3.6. 连接字符集和校对 10.3.7. 字符串文字字符集和校对 10.3.8. 在SQL语句中使用COLLATE 10.3.9. COLLATE子句优先 10.3.10. BINARY操作符 10.3.11. 校对确定较为复杂的一些特殊情况 10.3.12. 校对必须适合字符集 10.3.13. 校对效果的示例 10.4. 字符集支持影响到的操作 10.4.1. 结果字符串 10.4.2. CONVERT() 10.4.3. CAST() 10.4.4. SHOW语句 10.5. Unicode支持 10.6. 用于元数据的UTF8 10.7. 与其它DBMS的兼容性 10.8. 新字符集配置文件格式 10.9. 国家特有字符集 10.10. MySQL支持的字符集和校对 10.10.1. Unicode字符集 10.10.2. 西欧字符集 10.10.3. 中欧字符集 10.10.4. 南欧与中东字符集 10.10.5. 波罗的海字符集 10.10.6. 西里尔字符集 10.10.7. 亚洲字符集 11. 列类型 11.1. 列类型概述 11.1.1. 数值类型概述 11.1.2. 日期和时间类型概述 11.1.3. 字符串类型概述 11.2. 数值类型 11.3. 日期和时间类型 11.3.1. DATETIME、DATE和TIMESTAMP类型 11.3.2. TIME类型 11.3.3. YEAR类型 11.3.4. Y2K事宜和日期类型 11.4. String类型 11.4.1. CHAR和VARCHAR类型 11.4.2. BINARY和VARBINARY类型 11.4.3. BLOB和TEXT类型 11.4.4. ENUM类型 11.4.5. SET类型 11.5. 列类型存储需求 11.6. 选择正确的列类型 11.7. 使用来自其他数据库引擎的列类型 12. 函数和操作符 12.1. 操作符 12.1.1. 操作符优先级 12.1.2. 圆括号 12.1.3. 比较函数和操作符 12.1.4. 逻辑操作符 12.2. 控制流程函数 12.3. 字符串函数 12.3.1. 字符串比较函数 12.4. 数值函数 12.4.1. 算术操作符 12.4.2. 数学函数 12.5. 日期和时间函数 12.6. MySQL使用什么日历? 12.7. 全文搜索功能 12.7.1. 布尔全文搜索 12.7.2. 全文搜索带查询扩展 12.7.3. 全文停止字 12.7.4. 全文限定条件 12.7.5. 微调MySQL全文搜索 12.8. Cast函数和操作符 12.9. 其他函数 12.9.1. 位函数 12.9.2. 加密函数 12.9.3. 信息函数 12.9.4. 其他函数 12.10. 与GROUP BY子句同时使用的函数和修改程序 12.10.1. GROUP BY(聚合)函数 12.10.2. GROUP BY修改程序 12.10.3. 具有隐含字段的GROUP BY 13. SQL语句语法 13.1. 数据定义语句 13.1.1. ALTER DATABASE语法 13.1.2. ALTER TABLE语法 13.1.3. CREATE DATABASE语法 13.1.4. CREATE INDEX语法 13.1.5. CREATE TABLE语法 13.1.6. DROP DATABASE语法 13.1.7. DROP INDEX语法 13.1.8. DROP TABLE语法 13.1.9. RENAME TABLE语法 13.2. 数据操作语句 13.2.1. DELETE语法 13.2.2. DO语法 13.2.3. HANDLER语法 13.2.4. INSERT语法 13.2.5. LOAD DATA INFILE语法 13.2.6. REPLACE语法 13.2.7. SELECT语法 13.2.8. Subquery语法 13.2.9. TRUNCATE语法 13.2.10. UPDATE语法 13.3. MySQL实用工具语句 13.3.1. DESCRIBE语法(获取有关列的信息) 13.3.2. USE语法 13.4. MySQL事务处理和锁定语句 13.4.1. START TRANSACTION, COMMIT和ROLLBACK语法 13.4.2. 不能回滚的语句 13.4.3. 会造成隐式提交的语句 13.4.4. SAVEPOINT和ROLLBACK TO SAVEPOINT语法 13.4.5. LOCK TABLES和UNLOCK TABLES语法 13.4.6. SET TRANSACTION语法 13.4.7. XA事务 13.5. 数据库管理语句 13.5.1. 账户管理语句 13.5.2. 表维护语句 13.5.3. SET语法 13.5.4. SHOW语法 13.5.5. 其它管理语句 13.6. 复制语句 13.6.1. 用于控制主服务器的SQL语句 13.6.2. 用于控制从服务器的SQL语句 13.7. 用于预处理语句的SQL语法 14. 插件式存储引擎体系结构 14.1. 前言 14.2. 概述 14.3. 公共MySQL数据库服务器层 14.4. 选择存储引擎 14.5. 将存储引擎指定给表 14.6. 存储引擎和事务 14.7. 插入存储引擎 14.8. 拔出存储引擎 14.9. 插件式存储器的安全含义 15. 存储引擎和表类型 15.1. MyISAM存储引擎 15.1.1. MyISAM启动选项 15.1.2. 键所需的空间 15.1.3. MyISAM表的存储格式 15.1.4. MyISAM表方面的问题 15.2. InnoDB存储引擎 15.2.1. InnoDB概述 15.2.2. InnoDB联系信息 15.2.3. InnoDB配置 15.2.4. InnoDB启动选项 15.2.5. 创建InnoDB表空间 15.2.6. 创建InnoDB表 15.2.7. 添加和删除InnoDB数据和日志文件 15.2.8. InnoDB数据库的备份和恢复 15.2.9. 将InnoDB数据库移到另一台机器上 15.2.10. InnoDB事务模型和锁定 15.2.11. InnoDB性能调节提示 15.2.12. 多版本的实施 15.2.13. 表和索引结构 15.2.14. 文件空间管理和磁盘I/O 15.2.15. InnoDB错误处理 15.2.16. 对InnoDB表的限制 15.2.17. InnoDB故障诊断与排除 15.3. MERGE存储引擎 15.3.1. MERGE表方面的问题 15.4. MEMORY (HEAP)存储引擎 15.5. BDB (BerkeleyDB)存储引擎 15.5.1. BDB支持的操作系统 15.5.2. 安装BDB 15.5.3. BDB启动选项 15.5.4. BDB表的特性 15.5.5. 修改BDB所需的事宜 15.5.6. 对BDB表的限制 15.5.7. 使用BDB表时可能出现的错误 15.6. EXAMPLE存储引擎 15.7. FEDERATED存储引擎 15.7.1. 安装FEDERATED存储引擎 15.7.2. FEDERATED存储引擎介绍 15.7.3. 如何使用FEDERATED表 15.7.4. FEDERATED存储引擎的局限性 15.8. ARCHIVE存储引擎 15.9. CSV存储引擎 15.10. BLACKHOLE存储引擎 16. 编写自定义存储引擎 16.1. 前言 16.2. 概述 16.3. 创建存储引擎源文件 16.4. 创建handlerton 16.5. 对处理程序进行实例化处理 16.6. 定义表扩展 16.7. 创建表 16.8. 打开表 16.9. 实施基本的表扫描功能 16.9.1. 实施store_lock()函数 16.9.2. 实施external_lock()函数 16.9.3. 实施rnd_init()函数 16.9.4. 实施info()函数 16.9.5. 实施extra()函数 16.9.6. 实施rnd_next()函数 16.10. 关闭表 16.11. 为存储引擎添加对INSERT的支持 16.12. 为存储引擎添加对UPDATE的支持 16.13. 为存储引擎添加对DELETE的支持 16.14. API引用 16.14.1. bas_ext 16.14.2. close 16.14.3. create 16.14.4. delete_row 16.14.5. delete_table 16.14.6. external_lock 16.14.7. extra 16.14.8. info 16.14.9. open 16.14.10. rnd_init 16.14.11. rnd_next 16.14.12. store_lock 16.14.13. update_row 16.14.14. write_row 17. MySQL簇 17.1. MySQL簇概述 17.2. MySQL簇的基本概念 17.3. 多计算机的简单基础知识 17.3.1. 硬件、软件和联网 17.3.2. 安装 17.3.3. 配置 17.3.4. 首次启动 17.3.5. 加载示例数据并执行查询 17.3.6. 安全关闭和重启 17.4. MySQL簇的配置 17.4.1. 从源码创建MySQL簇 17.4.2. 安装软件 17.4.3. MySQL簇的快速测试设置 17.4.4. 配置文件 17.5. MySQL簇中的进程管理 17.5.1. 用于MySQL簇的MySQL服务器进程使用 17.5.2. ndbd,存储引擎节点进程 17.5.3. ndb_mgmd,“管理服务器”进程 17.5.4. ndb_mgm,“管理客户端”进程 17.5.5. 用于MySQL簇进程的命令选项 17.6. MySQL簇的管理 17.6.1. MySQL簇的启动阶段 17.6.2. “管理客户端”中的命令 17.6.3. MySQL簇中生成的事件报告 17.6.4. 单用户模式 17.6.5. MySQL簇的联机备份 17.7. 使用与MySQL簇的高速互连 17.7.1. 配置MySQL簇以使用SCI套接字 17.7.2. 理解簇互连的影响 17.8. MySQL簇的已知限制 17.9. MySQL簇发展的重要历程 17.9.1. MySQL 5.0中的MySQL簇变化 17.9.2. 关于MySQL簇的MySQL 5.1发展历程 17.10. MySQL簇常见问题解答 17.11. MySQL簇术语表 18. 分区 18.1. MySQL中的分区概述 18.2. 分区类型 18.2.1. RANGE分区 18.2.2. LIST分区 18.2.3. HASH分区 18.2.4. KEY分区 18.2.5. 子分区 18.2.6. MySQL分区处理NULL值的方式 18.3. 分区管理 18.3.1. RANGE和LIST分区的管理 18.3.2. HASH和KEY分区的管理 18.3.3. 分区维护 18.3.4. 获取关于分区的信息 19. MySQL中的空间扩展 19.1. 前言 19.2. OpenGIS几何模型 19.2.1. Geometry类的层次 19.2.2. 类Geometry 19.2.3. 类Point 19.2.4. 类Curve 19.2.5. 类LineString 19.2.6. 类Surface 19.2.7. 类Polygon 19.2.8. 类GeometryCollection 19.2.9. 类MultiPoint 19.2.10. 类MultiCurve 19.2.11. 类MultiLineString 19.2.12. 类MultiSurface 19.2.13. 类MultiPolygon 19.3. 支持的空间数据格式 19.3.1. 著名的文本(WKT)格式 19.3.2. 著名的进制(WKB)格式 19.4. 创建具备空间功能的MySQL数据库 19.4.1. MySQL空间数据类型 19.4.2. 创建空间值 19.4.3. 创建空间列 19.4.4. 填充空间列 19.4.5. 获取空间数据 19.5. 分析空间信息 19.5.1. Geometry格式转换函数 19.5.2. Geometry函数 19.5.3. 从已有Geometry创建新Geometry的函数 19.5.4. 测试几何对象间空间关系的函数 19.5.5. 关于几何最小边界矩形(MBR)的关系 19.5.6. 测试几何类之间空间关系的函数 19.6. 优化空间分析 19.6.1. 创建空间索引 19.6.2. 使用空间索引 19.7. MySQL的一致性和兼容性 19.7.1. 尚未实施的GIS特性 20. 存储程序和函数 20.1. 存储程序和授权表 20.2. 存储程序的语法 20.2.1. CREATE PROCEDURE和CREATE FUNCTION 20.2.2. ALTER PROCEDURE和ALTER FUNCTION 20.2.3. DROP PROCEDURE和DROP FUNCTION 20.2.4. SHOW CREATE PROCEDURE和SHOW CREATE FUNCTION 20.2.5. SHOW PROCEDURE STATUS和SHOW FUNCTION STATUS 20.2.6. CALL语句 20.2.7. BEGIN ... END复合语句 20.2.8. DECLARE语句 20.2.9. 存储程序中的变量 20.2.10. 条件和处理程序 20.2.11. 光标 20.2.12. 流程控制构造 20.3. 存储程序、函数、触发程序和复制:常见问题 20.4. 存储子程序和触发程序的进制日志功能 21. 触发程序 21.1. CREATE TRIGGER语法 21.2. DROP TRIGGER语法 21.3. 使用触发程序 22. 视图 22.1. ALTER VIEW语法 22.2. CREATE VIEW语法 22.3. DROP VIEW语法 22.4. SHOW CREATE VIEW语法 23. INFORMATION_SCHEMA信息数据库 23.1. INFORMATION_SCHEMA表 23.1.1. INFORMATION_SCHEMA SCHEMATA表 23.1.2. INFORMATION_SCHEMA TABLES表 23.1.3. INFORMATION_SCHEMA COLUMNS表 23.1.4. INFORMATION_SCHEMA STATISTICS表 23.1.5. INFORMATION_SCHEMA USER_PRIVILEGES表 23.1.6. INFORMATION_SCHEMA SCHEMA_PRIVILEGES表 23.1.7. INFORMATION_SCHEMA TABLE_PRIVILEGES表 23.1.8. INFORMATION_SCHEMA COLUMN_PRIVILEGES表 23.1.9. INFORMATION_SCHEMA CHARACTER_SETS表 23.1.10. INFORMATION_SCHEMA COLLATIONS表 23.1.11. INFORMATION_SCHEMA COLLATION_CHARACTER_SET_APPLICABILITY表 23.1.12. INFORMATION_SCHEMA TABLE_CONSTRAINTS表 23.1.13. INFORMATION_SCHEMA KEY_COLUMN_USAGE表 23.1.14. INFORMATION_SCHEMA ROUTINES表 23.1.15. INFORMATION_SCHEMA VIEWS表 23.1.16. INFORMATION_SCHEMA TRIGGERS表 23.1.17. 其他INFORMATION_SCHEMA表 23.2. SHOW语句的扩展 24. 精度数学 24.1. 数值的类型 24.2. DECIMAL数据类型更改 24.3. 表达式处理 24.4. 四舍五入 24.5. 精度数学示例 25. API和库 25.1. libmysqld,嵌入式MySQL服务器库 25.1.1. 嵌入式MySQL服务器库概述 25.1.2. 使用libmysqld编译程序 25.1.3. 使用嵌入式MySQL服务器时的限制 25.1.4. 与嵌入式服务器一起使用的选项 25.1.5. 嵌入式服务器中尚需完成的事项(TODO) 25.1.6. 嵌入式服务器示例 25.1.7. 嵌入式服务器的许可 25.2. MySQL C API 25.2.1. C API数据类型 25.2.2. C API函数概述 25.2.3. C API函数描述 25.2.4. C API预处理语句 25.2.5. C API预处理语句的数据类型 25.2.6. C API预处理语句函数概述 25.2.7. C API预处理语句函数描述 25.2.8. C API预处理语句方面的问题 25.2.9. 多查询执行的C API处理 25.2.10. 日期和时间值的C API处理 25.2.11. C API线程函数介绍 25.2.12. C API嵌入式服务器函数介绍 25.2.13. 使用C API时的常见问题 25.2.14. 创建客户端程序 25.2.15. 如何生成线程式客户端 25.3. MySQL PHP API 25.3.1. 使用MySQL和PHP的常见问题 25.4. MySQL Perl API 25.5. MySQL C++ API 25.5.1. Borland C++ 25.6. MySQL Python API 25.7. MySQL Tcl API 25.8. MySQL Eiffel Wrapper 25.9. MySQL程序开发实用工具 25.9.1. msql2mysql:转换mSQL程序以用于MySQL 25.9.2. mysql_config:获取编译客户端的编译选项 26. 连接器 26.1. MySQL Connector/ODBC 26.1.1. MyODBC介绍 26.1.2. 关于ODBC和MyODBC的一般信息 26.1.3. 如何安装MyODBC 26.1.4. 在Windows平台上从进制版本安装MyODBC 26.1.5. I在Unix平台上从进制版本安装MyODBC 26.1.6. 在Windows平台上从源码版本安装MyODBC 26.1.7. 在Unix平台上从源码版本安装MyODBC 26.1.8. 从BitKeeper开发源码树安装MyODBC 26.1.9. MyODBC配置 26.1.10. 与MyODBC连接相关的事宜 26.1.11. MyODBC和Microsoft Access 26.1.12. MyODBC和Microsoft VBA及ASP 26.1.13. MyODBC和第三方ODBC工具 26.1.14. MyODBC通用功能 26.1.15. 基本的MyODBC应用步骤 26.1.16. MyODBC API引用 26.1.17. MyODBC数据类型 26.1.18. MyODBC错误代码 26.1.19. MyODBC与VB:ADO、DAO和RDO 26.1.20. MyODBC与Microsoft.NET 26.1.21. 感谢 26.2. MySQL Connector/NET 26.2.1. 前言 26.2.2. 下载并安装MySQL Connector/NET 26.2.3. Connector/NET体系结构 26.2.4. 使用MySQL Connector/NET 26.2.5. MySQL Connector/NET变更史 26.3. MySQL Connector/J 26.3.1. 基本的JDBC概念 26.3.2. 安装 Connector/J 26.3.3. JDBC引用 26.3.4. 与J2EE和其他Java框架一起使用 Connector/J 26.3.5. 诊断 Connector/J方面的问题 26.3.6. Changelog 26.4. MySQL Connector/MXJ 26.4.1. 前言 26.4.2. 支持平台: 26.4.3. Junit测试要求 26.4.4. 运行Junit测试 26.4.5. 作为JDBC驱动程序的一部分运行 26.4.6. 在Java对象中运行 26.4.7. MysqldResource API 26.4.8. 在JMX代理(custom)中运行 26.4.9. 部署在标准的JMX代理环境下 (JBoss) 26.4.10. 安装 27. 扩展MySQL 27.1. MySQL内部控件 27.1.1. MySQL线程 27.1.2. MySQL测试套件 27.2. 为MySQL添加新函数 27.2.1. 自定义函数接口的特性 27.2.2. CREATE FUNCTION/DROP FUNCTION语法 27.2.3. 添加新的自定义函数 27.2.4. 添加新的固有函数 27.3. 为MySQL添加新步骤 27.3.1. 步骤分析 27.3.2. 编写步骤 A. 问题和常见错误 A.1. 如何确定导致问题的原因 A.2. 使用MySQL程序时的常见错误 A.2.1. 拒绝访问 A.2.2. 无法连接到[local] MySQL服务器 A.2.3. 客户端不支持鉴定协议 A.2.4. 输入密码时出现密码错误 A.2.5. 主机的host_name被屏蔽 A.2.6. 连接数过多 A.2.7. 内存溢出 A.2.8. MySQL服务器不可用 A.2.9. 信息包过大 A.2.10. 通信错误和失效连接 A.2.11. 表已满 A.2.12. 无法创建文件/写入文件 A.2.13. 命令不同步 A.2.14. 忽略用户 A.2.15. 表tbl_name不存在 A.2.16. 无法初始化字符集 A.2.17. 文件未找到 A.3. 与安装有关的事宜 A.3.1. 与MySQL客户端库的链接问题 A.3.2. 如何以普通用户身份运行MySQL A.3.3. 与文件许可有关的问题 A.4. 与管理有关的事宜 A.4.1. 如何复位根用户密码 A.4.2. 如果MySQL依然崩溃,应作些什么 A.4.3. MySQL处理磁盘满的方式 A.4.4. MySQL将临时文件储存在哪里 A.4.5. 如何保护或更改MySQL套接字文件/tmp/mysql.sock A.4.6. 时区问题 A.5. 与查询有关的事宜 A.5.1. 搜索中的大小写敏感性 A.5.2. 使用DATE列方面的问题 A.5.3. 与NULL值有关的问题 A.5.4. 与列别名有关的问题 A.5.5. 非事务表回滚失败 A.5.6. 从相关表删除行 A.5.7. 解决与不匹配行有关的问题 A.5.8. 与浮点比较有关的问题 A.6. 与优化器有关的事宜 A.7. 与表定义有关的事宜 A.7.1. 与ALTER TABLE有关的问题 A.7.2. 如何更改表中的列顺序 A.7.3. TEMPORARY TABLE问题 A.8. MySQL中的已知事宜 A.8.1. MySQL中的打开事宜 B. 错误代码和消息 B.1. 服务器错误代码和消息 B.2. 客户端错误代码和消息 C. 感谢 C.1. MySQL AB处的开发人 C.2. MySQL贡献人 C.3. 资料员和译员 C.4. MySQL使用和包含的库 C.5. 支持MySQL的软件包 C.6. 用于创建MySQL的工具 C.7. MySQL支持人员 D. MySQL变更史 D.1. 5.1.x版中的变更情况(开发) D.1.1. 5.1.2版中的变更情况(尚未发布) D.1.2. 5.1.1版中的变更情况(尚未发布) D.2. MyODBC的变更情况 D.2.1. MyODBC 3.51.12的变更情况 D.2.2. MyODBC 3.51.11的变更情况 E. 移植到其他系统 E.1. 调试MySQL服务器 E.1.1. 针对调试编译MySQL E.1.2. 创建跟踪文件 E.1.3. 在gdb环境下调试mysqld E.1.4. 使用堆栈跟踪 E.1.5. 使用日志文件找出mysqld中的错误原因 E.1.6. 如果出现表崩溃,请生成测试案例 E.2. 调试MySQL客户端 E.3. DBUG软件包 E.4. 关于RTS线程的注释 E.5. 线程软件包之间的差异 F. 环境变量 G. MySQL正则表达式 H. MySQL中的限制 H.1. 联合的限制 I. 特性限制 I.1. 对存储子程序和触发程序的限制 I.2. 对服务器端光标的限制 I.3. 对子查询的限制 I.4. 对视图的限制 I.5. 对XA事务的限制 J. GNU通用公共许可 K. MySQL FLOSS许可例外 索引 图形清单 14.1. MySQL插件式存储引擎的体系结构 14.2. 存储引擎比较 16.1. MySQL体系结构 表格清单 26.1. 连接属性 26.2. 转换表 26.3. 用于ResultSet.getObject()的MySQL类型和Java类型 26.4. MySQL对Java编码名称的翻译 示例清单 26.1. 从DriverManager获得连接 26.2. 使用java.sql.Statement执行SELECT查询 26.3. 存储程序示例 26.4. 使用Connection.prepareCall() 26.5. 注册输出参数 26.6. 设置CallableStatement输入参数 26.7. 检索结果和输出参数值 26.8. 使用Statement.getGeneratedKeys()检索AUTO_INCREMENT列的值 26.9. 使用SELECT LAST_INSERT_ID()检索AUTO_INCREMENT列的值 26.10. 在可更新的ResultSets中检索AUTO_INCREMENT列的值 26.11. 设置Unix环境下的CLASSPATH 26.12. 与J2EE应用服务器一起使用连接池 26.13. 重试逻辑的事务示例
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吴代庄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值