徐州云龙区建设局网站,优化seo培训班,wordpress 专栏页面,有赞微商城官网登入通常所说的 MySQL 服务器指的是mysqld程序#xff0c;当运⾏mysqld后对外提供MySQL 服务#xff0c;这个专题的内容涵盖了以下关于MySQL 服务器以及相关配置的内容#xff0c;包括#xff1a; 服务器⽀持的启动选项。可以在命令⾏和配置⽂件中指定这些选项。 服务器系统变… 通常所说的 MySQL 服务器指的是mysqld程序当运⾏mysqld后对外提供MySQL 服务这个专题的内容涵盖了以下关于MySQL 服务器以及相关配置的内容包括 服务器⽀持的启动选项。可以在命令⾏和配置⽂件中指定这些选项。 服务器系统变量。反映了启动选项的当前状态和值其中⼀些变量可以在服务器运⾏时修改。 服务器状态变量。这些变量包含了有关运⾏时操作的计数器和统计信息。 服务器如何管理客⼾端连接。 配置和使⽤时区⽀持。 服务器端帮助功能。
服务器配置和默认值 mysqld 有很多选项和系统变量可以在启动时进⾏配置要查看服务器的默认选项和系统变量值可以执⾏以下命令 mysqld --verbose --help # 查看所有mysqld 选项和可配置的系统变量列表及默认值
roothcss-ecs-9734:/var/lib/mysql# mysqld --verbose --help
# 内容看起来像这样
abort-slave-event-count 0
allow-suspicious-udfs FALSE
archive ON
auto-increment-increment 1
... 省略
transaction-read-only FALSE
transaction-write-set-extraction XXHASH64
updatable-views-with-limit YES 查看服务器在运⾏时系统变量的值连接到MySQL并执⾏以下语句 show variables [like ...]; 其中可以跟 like 语句和通配符查找某些具体的系统变量例如 查看服务器在运⾏时的⼀些统计和状态指⽰器连接到MySQL并执⾏以下语句 show status like [...]; 其中可以跟 like 语句和通配符查找某些具体的 统计和状态指⽰器例如 系统变量和状态信息也可以使⽤ mysqladmin命令来查看: mysqladmin variables
mysqladmin extended status 关于服务器的选项、系统变量、状态变量参考以下官⽹列 https://dev.mysql.com/doc/refman/8.0/en/server-option-variable-reference.html 系统变量和选项 当通过mysqld启动数据库服务器时可以通过选项⽂件或命令⾏中提供选项但是在⼤多数情况下为确保服务器每次运⾏时都使⽤相同的选项最好的⽅法是在选项⽂件中指定相应的选项 mysqld从选项⽂件中的 [mysqld] 和 [server] 组(节点)中读取选项内容。 mysqld接受的选项可以通过 mysqld --verbose --help 查看列表中的有些项⽬是可以在服务器启动时设置的系统变量系统变量可以在连接MySQL后使⽤ SHOW VARIABLES 语句查看但有些内容只在 --help 中存在使⽤ SHOW VARIABLES 时并没有显⽰这是因为它们只是选项⽽不是系统变量。 注意选项值可以通过命令⾏和选项⽂件设置部分系统变量可以通过SET语句动态设置值。 常⽤选项如下 选项系統变量说明--character-set-servercharacter-set-server服务器的默认字符集默认 utf8mb4如果设置了这个变量还应该设置 collation_server 来指定字符集的排序规则。--collation-servercollation_server 服务器的默认排序默认utf8mb4_0900_ai_ci --port port MySQL服务启动后监听的端⼝号 --datadir datadir MySQL服务器的数据⽬录 --default-storage-engine default_storag e_engine 表的默认存储引擎 --log-output log_output ⼀般查询⽇志和慢速查询⽇志输出的⽬的地值可以是 TABLE , FILE 和 NONE 可以同时指定多个值 NONE 的优先级最⾼ --general-log general_log 是否启⽤⼀般查询⽇志。值为 0 (或 OFF )禁⽤⽇志为 1 (或 ON )来启⽤⽇志。⽇志输出⽬录由 log_output 系统变量控制 --general-log-file general_log_file ⼀般查询⽇志⽂件的名称。默认值是 host_name .log --slow-query-log slow_query_log 是否启⽤慢查询⽇志。值为 0 (或 OFF )禁⽤⽇志为 1 (或 ON )来启⽤⽇志。⽇志输出⽬录由 log_output 系统变量控制 --slow-query-log-file slow_query_log_file 慢查询⽇志⽂件的名称。默认值是 host_name -slow.log --long-query-time long_query_time 如果查询花费的时间超过这个数秒服务器将增加Slow_queries状态变量如果慢速查询⽇志开启查询将被记录到慢速查询⽇志⽂件中默认值为10单位为秒 --log-error log_error 默认的错误⽇志⽬标。如果⽬标是控制台值为 stderr ⽬标是⼀个⽂件值为具体的⽂件名 --log-bin 指定⽤于⼆进制⽇志⽂件的基本名称 --server-id server_id该变量指定服务器ID默认为 1 。 --max-connections max_connections 允许客⼾端同时连接的最⼤数 使⽤系统变量 当使⽤选项设置⼀个数值的变量时可以带有后缀 K 、 M 或 G ⼤⼩写不限表⽰ 1024 、1024^2 或 1024^3 从MySQL 8.0.14 开始后缀也可以⽤ T 、 P 和 E 来表⽰ 1024^4 、1024^5 或 1024^6 .⽰例为服务器指定 256 KB 的排序缓冲区⼤⼩和 1 GB 的最⼤数据包⼤⼩ # 在命令⾏的指定
mysqld --sort-buffer-size256K --max-allowed-packet1G
# 在选项⽂件中指定
[mysqld]
sort_buffer_size256k
max_allowed_packet1g 系统变量有两个作⽤域分别是 Global (全局)和 Session (会话) Global 全局变量影响服务器的整体操作 Session 会话变量影响各个客⼾端连接的操作。给定的系统变量可以同时具有 全局值和会话值它们的关系如下服务器启动时会将每个全局变量初始化并设置默认值具体的值可以通过命令⾏或选项⽂件更改服务器为每个客⼾端维护⼀组 Session 变量在客⼾端连接时使⽤相应全局变量的当前值进⾏初始化。 ⼤部分系统变量是动态的在服务器运⾏时可以连接 mysql 使⽤ SET 语句设置系统变量需要指定作⽤域(也可以在前⾯加上 修饰符)然后指定系统变量的名称如下所⽰ 1.设置全局系统变量最⼤连接数为1000 set global max_connections 1000;
set global.max_connections 1000; 2.将全局系统变量持久化到 mysqld-auto.cnf ⽂件同时设置运⾏时值 # PERSIST 表⽰持久化的同时设置全局变量的值
set persist max_connections 1000;
set persist.max_connections 1000; 下表为MySQL的配置文件配置优先级往下逐级递增其中 mysqld-auto.cnf ⽂件为配置优先级最高的文件默认不存在该文件只有使用 set persist 语句时才生成该文件。 ⽂件名说明 %WINDIR%\my.ini , %WINDIR%\my.cnf 全局%WINDIR%是一个环境变量它代表Windows操作系统的安装目录通常等于C:\Windows C:\my.ini , C:\my.cnf 全局 BASEDIR\my.ini , BASEDIR\my.cnf 全局其中BASEDIR指mysql的安装路径这是最常用的配置文件 defaults-extra-file 如果存在其他选项⽂件可以通过 --defaults-extra-file 选项指定 %APPDATA%\MySQL\.mylogin.cnf 登录路径选项仅限客⼾端%APPDATA% 表⽰应⽤程序数据的⽬录如C:\Users\[用户名]\AppData\Roaming DATADIR\mysqld-auto.cnf 系统变量 (仅限服务器) 而 mysqld-auto.cnf 文件位于 /var/lib/mysql 路径下其内容如下 roothcss-ecs-9734:/var/lib/mysql# cat mysqld-auto.cnf
{Version: 2, mysql_dynamic_parse_early_variables: {max_connections: {Value: 1000, Metadata: {Host: localhost, User: root, Timestamp: 1735369777874841}}}} 在mysql中也可以看到 max_connections 已经被设置为1000 3.将全局系统变量持久化到 mysqld-auto.cnf ⽂件不设置运⾏时值 # PERSIST 表⽰持久化的同时设置全局变量的值
set persist_only max_connections 1000;
set persist_only.max_connections 1000; 删除持久化的系统变量可以使⽤语句 reset persist if exits system_var_name; 4.设置 Session 系统变量时区为8:00 set session time_zone 8:00;
set session.time_zone 8:00;
set time_zone 8:00; 对于数值型的系统变量⽤带有后缀的值指定时只适⽤于选项⽅式⽽不能⽤在 SET ⽅式中SET ⽅式可以使⽤表达式为系统变量指定值⽽在选项⽅式中不允许如下所⽰ # 选项形式
mysqld --max_allowed_packet16M # 允许
mysqld --max_allowed_packet16*1024*1024 # 不允许
# 运⾏时SET形式
set global max_allowed_packet16M; # 不允许
set global max_allowed_packet16*1024*1024; # 允许 ⽰例服务器常⽤配置 Linux系统下编辑 /etc/mysql/my.cnf Windows系统下打开MySQL Server程序安装路径/my.ini例如我电脑上为D:\mysql\MySQL Server 8.0\my.ini 注意 编辑前先备份原始⽂件 如果要修改数据⽬录选项建议先停⽌MySQL服务并把原data⽬录整体复制到新路径配置完成后重启服务 在 [mysqld] 节点下添加以下内容 # MySQL 服务节点
[mysqld]
# MySQL 服务启动后监听的端⼝号
port3306
# 数据⽬录的路径这⾥演⽰的是windows下的配置注意分隔符⽤/如果是\则需要转义为\\.
# 把原data⽬录整体复制到新路径
datadirD:/database/MySQL/data8.0
# MySQL 服务器的字符集与排序规则
character-set-serverutf8mb4
collation-serverutf8mb4_general_ci
# 新建表时使⽤的存储引擎windows下已默认配置
default-storage-engineINNODB
#注意要多敲一个回车键即光标要在最后一行配置信息的下一行