Linux下mysql安装及初始登录

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lzghxjt/article/details/81437758

1、一般都会安装在/usr/local下,相当于windows系统中C盘下的Program Files,所以将安装包放在/usr/local下并解压;

2、创建mysql系统用户和组,用于启动mysql

3、将解压出的目录重命名为mysql(或者使用ln -s建立软连接,方便管理),并修改该目录的所属用户和组,修改访问控制权限;

4、查看mysql安装目录,目录结构如图所示:

5、对数据库进行初始化(生成数据库的系统配置数据以及授权表等信息)。如图报错,是因为:

        1)mysql_install_db命令在5.7已不再建议使用,使用mysqld --initialize代替;

        2)数据库的系统数据是放在mysql的data目录下,而data目录不存在。

6、更换使用mysqld --initialize初始化后, 会自动生成data目录。同时在数据库中会生成root用户及其初始随机密码,用于数据库初始登录,该系统数据位于生成的data目录中的mysql数据库文件中;还会生成针对该数据库的uuid,用于区分不同的mysql服务器,该uuid存在生成的data目录中的auto.cnf文件中(由于没加--参数指定data路径和启动用户,data目录默认在mysql的安装目录下生成,同时生成的data目录所属用户和组不是mysql)。

7、大部分情况下,由于存在系统默认的全局配置/etc/my.cnf可能导致生成的data目录不在期望的路径,或者安装目录想放在其他地方,都最好使用--参数指定路径初始化数据库。如果data目录不改动,再次初始化时需要将已生成的data目录删除,否则会报目录已存在。这里使用rm删除已生成的data目录后使用--datadir指定data生成位置,使用--user指定初始化数据库的用户为mysql,初始化成功之后,可以看到在安装目录下自动生成了data目录,所属用户和组为指定的用户mysql;

8、在data目录下,可以看到生成mysql服务器中核心的系统数据库mysql,其中root用户的数据便存在该目录中,标识该mysql服务器唯一性的uuid便存在data目录中的auto.cnf中。

9、初始化成功后就可以启动mysql服务器。推荐使用mysqld_safe而非mysqld启动mysql,因为mysqld有安全机制便于追查问题。命令行后加"&"使其在后台运行。同上,如果不加--参数,log-error、pid-file的路径默认都在data目录中,socket的路径默认在/tmp下(.sock文件用于连接本机数据库时不需要ip和port就可以连接)。

10、为方便以后管理和查看日志等信息,使用--参数指定路径,前提是这些路径必须存在,否则会导致启动失败或者生成的文件还使用系统默认的路径,所以在使用--参数指定路径启动前手动创建这些目录和文件,并给用户mysql授目录和文件权限;

11、将已启动的mysql停掉,重新使用--参数指定路径启动。可以看到.err,.pid以及.sock都在指定的目录生成。查看mysql进程,可以看到部分文件所在的路径。

12、如果不想使用--指定参数,还可以将参数统一放在my.cnf配置文件中,然后使用--defaults-file指定该配置文件路径,也可以达到同样的效果;

13、除了使用mysqld_safe启动之外,还可以使用mysql安装目录下support-files中的mysql.server进行启动,同样如果不指定路径,生成的文件将放在默认的路径下。

注意事项:

1、my.cnf加载顺序为:

路径 说明
/etc/my.cnf 全局配置
/etc/mysql/my.cnf 全局配置
SYSCONFDIR/my.cnf 全局配置
$MYSQL_HOME/my.cnf 局部配置
defaults-extra-file 局部配置
~/.my.cnf 局部配置

        也就是说后加载的配置会将之前加载的配置覆盖掉,最终生效的是后加载的配置。特殊的,如果在使用mysqld_safe启动mysql时使用了参数--defaults-file指定自定义配置文件,将最终使用指定配置文件中的配置,此时要求该配置文件只允许所属用户具有写权限,其他用户不能有写权限,否则启动会报错。

my.cnf配置文件内容如下:

[client]
port                     = 8800
socket                   = /usr/local/mysql/tmp/mysql.sock

[mysqld]
port                     = 8800
socket                   = /usr/local/mysql/tmp/mysql.sock
pid-file                 = /usr/local/mysql/log/mysql.pid
basedir                  = /usr/local/mysql
datadir                  = /usr/local/mysql/data

character-set-server     = utf8 
skip-character-set-client-handshake
skip-ssl

tmpdir                   = /usr/local/mysql/tmp/

language                 = /usr/local/mysql/share/english/
character-sets-dir       = /usr/local/mysql/share/charsets/

log-warnings             = 1
log-error                = /usr/local/mysql/log/mysql.err

max_allowed_packet	 = 64M

sql-mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

[mysqld_safe]
err-log			 = /usr/local/mysql/log/mysqld.log
pid-file		 = /usr/local/mysql/log/mysql.pid 

my.cnf其他参数说明如下:

user= 运行mysqld服务器的用户名或用户ID
bind-address= 默认0.0.0.0,服务器监听的网络套接字绑定到一个单独的地址
port= 监听TCP/IP连接的端口号,必须是1024或更高,除非以root身份运行
port-open-timeout= 默认值0,表示服务器应等待多少秒的TCP/IP端口成为免费的
server-id= 使用在主服务器和从服务器复制,以标识自己的识别性
chroot 将启动mysqld服务器在一个封闭的环境中使用chroot()系统调用
init-file= 指定一个包含SQL语句的文件,服务器在启动时执行
core-file= 指定mysql崩溃时生成的core文件路径
core-file-size= 指定mysql崩溃时生成的core文件大小
skip-grant-tables 服务器启动时不进行权限检查
basedir= 默认/,指定mysql安装目录
datadir= 默认basedir,指定数据安装目录
socket= 默认/tmp/mysql.sock,指定监听本地连接的Unix套接字文件
pid-file= 默认/var/lib,指定创建mysql进程ID文件的目录
tmpdir= 默认/tmp,指定临时文件的目录
secure-auth= 是否启用安全认证,老版本密码是16字节,新版本密码是41字节
safe-user-create 是否禁用grant语句创建用户
skip-show-database 是否只允许有SHOW DATABASES权限的用户执行SHOW DATABASES
max_user_connections= 任一用户同时连接的最大数目
max_connections= 所有用户同时连接的最大数目,超过此数目的连接将导致请求中断
secure-file-priv= 指定数据导入导出的文件所在目录,如果指定只能放在该目录中
max_prepared_stmt_count= 默认16382,设定prepared语句在服务器总数上限
skip-ssl 不使用SSL
ssl-ca= SSL的CA文件路径
ssl-capath= 代替ssl-ca,SSL的CA文件路径
ssl-cert= SSL的数字证书文件路径
ssl-cipher= 允许使用SSL加密的密码列表
ssl-key= RSA私钥文件路径
default-storage-engine=/default-table-type= 设置默认存储引擎
ansi 使用标准(ANSI)SQL语法代替MySQL语法
sql-mode= 设置支持的sql语法
auto_increment_increment= 设置自增列每次增加几,默认为1
auto_increment_offset= 设置自增列初始值,默认为1
div_precision_increment= 设置用/操作符执行除操作的结果的精确度的位数,默认4,最小0,最大30
enable-named-pipe 启用命名管道支持。该选项只适用Windows NT、2000、XP和2003系统,并且只适用支持命名管道连接的mysqld-nt和mysqld-max-nt服务器
enable-pstack 打印象征性的堆栈错误信息. 只有在linux系统下,并且mysql有启动选项 --with-pstack才可以使用
engine-condition-pushdown 簇相关下推特性
event-scheduler= 开关事件调度
skip-event-scheduler 关闭事件调度
exit-info 这是不同标志的一个位掩码,你可以用来调试mysqld服务器。不要使用该选项,除非你确切知道它在做什么
flush 执行SQL语句后向硬盘上清空更改。一般情况执行SQL语句后 MySQL向硬盘写入所有更改,让操作系统处理与硬盘的同步
flush_time= 每隔多少秒,执行一次flush
old-alter-table 设置服务器不使用优化的方法执行ALTER TABLE
old-style-user-limits 是否启用旧式用户limits
partition 启用或禁用用户定义的分区支持
skip-partition 禁用用户定义分区支持
plugin_dir= 指定插件目录
plugin-load= 指定服务器启动时要加载的插件
symbolic-links 启用支持符号链接,可以将MyISAM索引文件和数据文件放到除my.cnf指定的data目录外的其他地方
skip-symbolic-links 禁用符号链接
lock_wait_timeout= 设置等待数据锁的超时时间,单位为秒
sync_frm 设置当任何非临时表被创建时,frm文件同步到磁盘
temp-pool 设置让临时文件使用的一小部分名称
updatable_views_with_limit 设置当视图不包含主键的所有列,并且UPDATE语句中包含一个LIMIT子句时,是否可以更新视图
console windows版本才支持,将错误日志消息写入stderr和stdout,即使指定了--log-error。如果使用该选项,mysqld不关闭控制台窗口
allow-suspicious-udfs 控制是否用户定义的函数只有一个xxx符,用作可载入的主函数。默认情况下,该选项被关闭,只有至少有一个附属符的UDF  可以载入。这样可以防止从未包含合法UDF的共享文件装载函数。
des-key-file= 从该文件读DES_ENCRYPT()和DES_DECRYPT()使用的默认键
group_concat_max_len= 允许的GROUP_CONCAT()函数结果的最大长度
max_long_data_size= 设定可以由mysql_stmt_send_long_data()这个C API函数所传送的参数值的最大长度,如果没有在mysqld启动时设定,其默认为max_allowed_packet变量的值。MySQL 5.6已经弃用此变量。
sysdate-is-now 设置SYSDATE()返回的是当前执行时间而非当前语句开始执行时间
default_week_format=

当调用WEEK()或YEARWEEK()函数时,如果不带可选的mode参数,则默认为此变量设置的那个模式值。

character-set-server= 设置服务器字符集
collation-server= 设置默认的collate排序集
character-set-client-handshake 不忽略客户端发来的字符集
skip-character-set-client-handshake 忽略客户端发来的字符集
character-set-filesystem= 设置文件系统的字符集
character-sets-dir= 指定存放字符集的目录
lower_case_file_system

设置包含数据目录的文件系统是否区分文件名的大小写。如果此变量的值为ON,则文件名不区分大小写

lower_case_table_names=

在执行CREATE DATABASE和CREATE TABLE语句时,设置如何处理数据库名和表明所对应的目录名和文件名。

0:按照CREATE DATABASE和CREATE TABLE语句里给出的名字来创建磁盘文件。名字的比较会区分大小写。在文件名区分大小写的系统里,它是默认设置。

1:在创建数据库和表时,名字强制转换为小写形式。名字的比较不区分大小写

2:以小写形式保存名字,但是在进行比较时不区分大小写。也就是说,创建的文件名与那些CREATE语句里指定的一样,但是比较时不区分大小写。只有在文件名区分大小写的系统里才会使用此变量的值。

       当没有显式设置lower_case_table_names变量时,如果数据目录所在的文件系统不区分文件名的大小写,那么MySQL服务器将自动把此变量设置为2。将此变量设置为非零值,也会使得表的别名不区分大小写

lc-messages= 设置错误消息的语言环境
lc-messages-dir= 设置错误消息的目录
default-time-zone= 设置默认服务器时区。该选项设置全局time_zone系统变量。如果未给出该选项, 默认时区与系统时区相同(用system_time_zone系统变量值给定)
bootstrap mysql_install_db脚本使用该选项来创建MySQL授权表,不需要启动MySQL服务器
memlock 设置服务器进程是否锁定在内存
large-pages 在Linux中,由于TLB损失减少,应用程序可能通过使用大页会获得性能方面的提升
join_buffer_size= mysqld用于平面索引扫描(plain index scans)、范围索引扫描或不使用索引的全表扫描时所能够使用的最小缓冲
sort_buffer_size= 设置完成排序操作的线程使用的缓冲区大小
table_open_cache=

设置服务器能够同时打开表的最大个数

table_definition_cache=

设置服务器在其定义缓存里可以存放的表定义(来自.frm文件)个数

range_alloc_block_size= 设置在进行范围优化时分配的内存的块大小
query_prealloc_size=

设置为分析和执行SQL语句而分配的那个缓冲区的长度

query_alloc_block_size=

设置在分析和执行SQL语句时分配的临时内存块大小

stored_program_cache=

设置服务器会为每个连接缓存多少存储例程

query_cache_type=

查询的Cache类型。

OFF :不进行缓冲

ON:进行缓冲

DEMAND:对SELECT SQL_CACHE开头的查询进行缓冲

query_cache_size= 查询Cache的大小
query_cache_min_res_unit= 设置为把查询结果存入查询缓存里而分配的内存块大小
query_cache_limit= 设置查询结果的最大缓存大小,超过这一大小的查询结果将不会被缓存
query_cache_wlock_invalidate 设置当表被写锁定时,客户端能否使用缓存查询
thread_handling= 设置服务器用于处理客户端连接的线程模型
slow_launch_time=

设置创建“慢”线程所占用的秒数

init_connect= 设定在每个客户端与mysqld建立连接时事先执行的一个或多个(彼此间用分号隔开)SQL语句,但对于具有SUPER权限的用户来说,此功能无效
back_log=

MySQL有的主要连接请求的数量。当主MySQL线程在短时间内得到许多连接请求时发挥作用。主线程需要花一些时间(尽管很少)来检查连接并启动一个新线程。back_log值说明MySQL临时停止响应新请求前在短时间内可以堆起多少请求。如果你需要在短时间内允许大量连接,可以增加该数值。

换句话说,该值为“进”TCP/IP连接帧听队列的大小。操作系统有该队列自己的限制值。该变量最大值请查阅OS文档。企图将back_log设置为高于你的操作系统限值是徒劳无益的

thread_cache_size= 设置线程缓冲区的所能容纳的最大线程个数
max_connect_errors= 设定客户端连接至mysqld时的最大错误尝试次数
big-tables 是否允许大数据表
tmp_table_size= 设置MySQL内部使用的各种临时表(即服务器在处理SQL语句的过程中自动创建的表)的最大允许长度
max_heap_table_size= 设置每个用户创建的MEMORY表所能够使用的最大内存空间
skip-networking 不监听所有的TCP/IP连接。
skip-name-resolve 当检查客户端连接时,不解析主机名
skip-host-cache 每次客户端连接时,服务器执行DNS查找禁止内部主机缓存
net_buffer_length= 设置服务器和客户之间通讯的使用的缓冲区长度
max_allowed_packet= 服务器和客户之间最大的通信的缓冲区长度
connect_timeout= 服务器端在响应“失败的握手操作”信息给客户端之前所等待的秒数,默认为10秒
wait_timeout= 以秒为单位设定所有SQL语句等待获取元数据锁(metadata lock)的超时时长,默认为31536000(1年),有效取值范围为0-31536000
interactive_timeout= mysqld进程等待一个已经建立连接的交互式客户端的后续命令之前所经过的秒数,默认为28800
net_read_timeout= 设置mysqld等待从客户端接收更多数据的超时时长,默认值为30
net_write_timeout= 设置mysqld等待向客户端传输数据的超时时长,默认值为60
net_retry_count=

设置中断的读取操作被重试的次数

profiling 设置是否开启语句性能分析
profiling_history_size= 保持分析信息的SQL语句数量
optimizer_prune_level=

设置优化器如何处理中间计划

optimizer_search_depth=

设置查询优化器搜索执行计划的深度

optimizer_switch=

被关闭或打开的优化器策略。其值为一个以逗号隔开的flag=value设置列表,其中,value的值可以为on或off。你页可以将标志设置为default,以表示不管其默认值为何值都需要返回它;或者将optimizer_switch自己设置为default,将所有的标志都恢复成默认值

max_seeks_for_key=

查询优化器在进行基于键的查找时会使用此变量。如果某个索引的差异度比较低(只有很少量的唯一值),那么优化器可能会认为在执行键查找操作时需要进行多次查找,从而会采用全表扫描的方式来代替。把此变量设置成某个小一点的值,则会使优化器认为在执行键查找时最多只需要指定数量的索引寻找,从而使其更倾向于选择使用索引,而不会执行全表扫描

max_length_for_sort_data= filesort算法改进版所能够使用的字段最大长度值。有效取值范围是4-8388608。MySQL的filesort算法有两个版本,即原始版本和修改版本,字段长度大于max_length_for_sort_data设定的将使用原始版本,小于此参数值的则使用修改版本在排序缓冲(sort buffer)中完成排序。在使用超出字段超出指定长度时使用修改版本算法,由于可能需要更多的I/O操作,将会导致修改版算法执行速度更慢,而不是更快。作用范围为全局或会话级别,可用于配置文件,属动态变量
max_error_count= 设置为SHOW ERRORS或SHOW WARNINGS语句所保留的关于错误、警告或注意信息条目的最大数。作用范围为全局或会话级别,可用于配置文件,属动态变量
max_join_size= 设置SELECT语句执行时所能够检查的行数(单表)或行组合(多表查询)的最大值。此参数可以阻止对键的错误使用而导致的需要执行较长时间的查询操作,因此,其尤其适用于有用户经常使用不带WHERE子句的查询场景中。有效取值范围为1-18446744073709551615,默认为18446744073709551615,这可以被理解为不限制。作用范围为全局或会话级别,可用于配置文件,属动态变量
max_sort_length= 设置mysqld执行数值排序时所使用的字节数,剩余的将被忽略。作用范围为全局级别,可用于配置文件,属动态变量
max_sp_recursion_depth=

设置每个存储过程的最大递归深度

open-files-limit= 设置在mysqld中可用的文件描述符数量
thread_stack= 设置每个线程的堆栈大小
log-output= 设置一般查询日志和慢查询日志的目录
log-error= 设置记录错误和启动消息的日志的目录
log-warnings 设置是否在错误日志中追加警告日志
skip-log-warnings 禁用警告日志
slow-query-log 设置慢查询日志是否启用
slow_query_log_file= 设置慢查询日志的目录
long_query_time= 设定区别慢查询与一般查询的语句执行时间长度。这里的语句执行时长为实际的执行时间,而非在CPU上的执行时长,因此,负载较重的服务器上更容易产生慢查询。其最小值为0,默认值为10,单位是秒钟。它也支持毫秒级的解析度。作用范围为全局或会话级别,可用于配置文件,属动态变量
log-queries-not-using-indexes 是否记录未使用索引的查询
log-slow-admin-statements 是否记录慢查询语句
log-slow-slave-statements 是否记录从库超过long_query_time秒数的查询
min-examined-row-limit= 设置要检查的行数大于等于N时才记录为慢查询
general-log 是否打开查询日志默认为0(or OFF),打开为1(or ON)
general_log_file= 是否生成查询日志文件,默认为host_name.log
skip-slave-start 设置从库启动时不启动从库线程
read_only

此变量控制的是从服务器是否会以只读方式来处理客户连接。默认情况下,read_only的值为OFF,此时,客户端的更新都会以平常的方式(即它们都有权限这样做)被接收。如果把此变量设置为ON,那么只有从主服务器那里接收到的语句(对于从服务器)或者拥有SUPER权限的客户端所执行的语句才能执行更新操作;SET PASSWORD要求SUPER权限。read_only不会应用于TEMPORARY表

init_slave= 指定每次SQL线程启动时都会执行的SQL语句
master-info-file= 设置master.info的目录
sync_master_info=

对于从服务器,如果这个变量为0(默认值),那么从服务器不会强制将它的master.info文件同步到磁盘。实际上,正常的文件系统会执行刷新操作。如果该值大于0,那么从服务器会在每个事件组处理完之后将该文件同步到磁盘

slave_type_conversions=

设置在从服务器上进行基于行的复制时允许的各种类型转换。默认值为空串(即不允许转换)。当其值为非空时,它应该是一个以逗号分隔的值列表,其中的值为一个或多个ALL_LOSSY(允许丢失信息的转换)或ALL_NON_LOSSY(允许那些不丢失信息的转换)。此变量是在MySQL 5.5.3里引入的

slave_transaction_retries=

设置从服务器重试失败事务的次数

slave_exec_mode= 设置mysql 主从复制中insert出现duplicate-key, update出现no-key-found  情况下的处理方式做控制
slave-skip-errors= 设置主从复制过程中从服务器可以自动跳过的错误号
slave-load-tmpdir= 默认为/tmp,设置从库复制LOAD DATA INFILE语句创建临时文件的目录
slave_compressed_protocol

设置是否要对从服务器和主服务器之间的通信进行压缩

slave-max-allowed-packet= 为从库的IO线程和SQL线程设置数据包大小
slave-net-timeout= 设置从库在等待多少秒后无响应才认为出现网络故障
master-retry-count= 设置从库连接主库的重试次数
show-slave-auth-info 设置在主库中是否显示从库用户名和密码
report-host= 设置将被通知给主库的ip
report-password= 设置将被通知给主库的密码
report-port= 设置将被通知给主库的端口
report-user= 设置将被通知给主库的账号
log-bin= 设置二进制日志的目录
log-bin-index= 设置二进制日志的索引文的目录
sync_binlog= 设置每次写入二进制日志时是否同步二进制日志到磁盘上
binlog-format= 可选为ROW, STATEMENT, MIXED,5.1.29后默认为 STATEMENT
max_binlog_size= 设置二进制日志文件大小
expire_logs_days= 设置二进制日志保留天数
binlog_cache_size= 在事务过程中容纳二进制日志SQL语句的缓存大小。二进制日志缓存是服务器支持事务存储引擎并且服务器启用了二进制日志(--log-bin选项)的前提下为每个客户端分配的内存。如果你经常使用大的,多语句事务,你可以增加该值以获得更有的性能。Binlog_cache_use和Binlog_cache_disk_use状态变量可以用来调整该变量的大小
max_binlog_cache_size=

设置二进制日志缓存的最大大小

binlog_stmt_cache_size=

设置在事务内执行非事务语句所需要的使用的缓存的大小

max_binlog_stmt_cache_size=

设置影响非事务表的语句所需要的使用的缓存的大小

binlog-row-event-max-size= 默认为1024,最大规模的基于行的二进制日志的最大大小,值应该是256的倍数
log-short-format 设置是否记录二进制日志和慢查询日志
log_slave_updates 设置从库是否将从主库得到的变化增加到自己的二进制日志文件中
log-bin-trust-function-creators 设置MySQL如何执行存储函数和触发器创建
log-bin-trust-routine-creators 设置MySQL执行创建存储过程
binlog_direct_non_transactional_updates

可以同时更新事务型表和非事务型表的事务,可能会导致住服务器里的更新与从服务器里的更新不一致,因为对非事务型语句的更新,在它们出现在二进制日志之前,对于其他会话来讲是可见的。启用此变量(默认是禁用的)会导致非事务型更新被立即写到二进制日志里,而不是被缓存起来,一直到事务提交之后才写入。启用此变量,仅对于那些使用基于语句的日志记录进行复制的语句才有效

relay-log= 设置从库中继日志的目录
relay-log-index= 设置从库中继日志的索引文件的目录
relay-log-info-file= 设置中继日志log.info的目录
sync_relay_log= 设置每次写入中继日志后,都将变化同步到磁盘
sync_relay_log_info= 设置每次写入relay_log_info日志后,都将变化同步到磁盘
max_relay_log_size= 设置中继日志的大小
relay_log_space_limit=

设置全体中继日志文件的最大允许大小

relay_log_purge=

设置从服务器会在用完一个中继日志文件之后是否删除

relay_log_recovery

设置从服务器删除所有的还未处理的中继日志后还可以再次从主服务器获取它们

binlog-do-db=

告诉主服务器,如果当前的数据库(即USE选定的数据库)是db_name,应将db_name中的更新记录到二进制日志中,其它所有没有明显指定的数据库被忽略。如果使用该选项,应确保只对当前的数据库进行更新。

binlog-ignore-db=

告诉主服务器,如果当前的数据库(即USE选定的数据库)是db_name,不应将db_name中的更新保存到二进制日志中。如果使用该选项,应确保只对当前的数据库进行更新。

replicate-do-db= 根据不同的binlog格式有不同的行为
replicate-ignore-db= 根据不同的binlog格式有不同的行为
replicate-do-table= 限制复制更新指定的表
replicate-ignore-table= 限制不要复制更新指定的表
replicate-wild-do-table= 模式可以包含“%”和“_”通配符
replicate-wild-ignore-table= 模式可以包含“%”和“_”通配符
replicate-same-server-id 设置相同的server-id是否要复制
replicate-rewrite-db= 转换的默认数据库为to_name
innodb_data_home_dir= 设置相对于InnoDB表空间组件文件存放位置的目录
innodb_data_file_path=

设置InnoDB表空间组件的文件目录

innodb_log_group_home_dir=

设置InnoDB日志文件写入的目录

innodb_log_files_in_group= 设置日志组中每个日志文件的大小
innodb_log_file_size= 设置日志文件的大小
innodb_open_files= 设置是否启动独立表空间
innodb_change_buffering=

设置InnoDB缓冲表更改辅助索引的延迟写操作方式

innodb_adaptive_hash_index=

设置InnoDB是否要使用自适应哈希索引

innodb_autoinc_lock_mode=

设置InnoDB用于生成AUTO_INCREMENT值的锁定算法

innodb_large_prefix

设置对于那些使用COMPRESSED或DYNAMIC行格式的表,允许前缀最高达到3072个字节

innodb_strict_mode

设置InnoDB是否对表和索引的创建和修改语句的语法进行较严格要求

innodb_use_sys_malloc=

设置InnoDB是否要使用系统内存分配器

innodb_buffer_pool_size=

设置InnoDB用于缓冲表数据和索引的那个缓存的大小

innodb_buffer_pool_instances=

设置内存缓冲池实例数量

innodb_max_dirty_pages_pct=

设置在InnoDB认为需要将日志刷新到磁盘之前,InnoDB允许脏页占用其缓冲池的百分比

innodb_old_blocks_pct=

设置InnoDB缓冲池的旧子列表所占百分比

innodb_old_blocks_time=

一个缓冲块在第一次访问之后、下次访问之前,需要在InnoDB缓冲池的旧子列表里待多少毫秒才能移动到新子列表里。默认值为0。表示的是,插到旧子列表里的缓存块,在第一次访问时会立即移到新子列表里去

innodb_additional_mem_pool_size=

设置InnoDB存储引擎用来存放各种内部数据结构的内存池的大小

innodb_log_buffer_size=

设置InnoDB事务日志缓冲区的大小

innodb_flush_method=

设置InnoDB用来刷新文件的方法

innodb_use_native_aio

设置在Linux里是否使用异步I/O子系统

innodb_adaptive_flushing

设置InnoDB是否会试图通过使用工作负载水平更改缓冲池里脏页刷新频率的方式来避免I/O爆炸

innodb_flush_log_at_trx_commit=

InnoDB日志的刷新行为:

0:每秒写入一次日志,并刷新到磁盘一次

1:每提交一次写入一次日志,并刷新到磁盘一次

2:每提交一次写入一次日志,但是每秒刷新到磁盘一次

innodb_io_capacity=

设置InnoDB对于后台任务每秒执行I/O操作次数的近似限制

innodb_read_io_threads=

设置InnoDB在执行读取操作时会时候多少个线程

innodb_write_io_threads=

设置InnoDB在执行写入操作时会使用多少个线程

innodb_read_ahead_threshold=

如果InnoDB检测到某个模式的顺序页面方位是由innodb_read_ahead_threshold或多个来自同一范围(页面组)的页面构成,那么它会在下一个范围里执行一个异步预读取操作。默认值为56。允许的取值范围为0~64

innodb_doublewrite

设置InnoDB是否启用了双写缓冲区

innodb_purge_threads=

InnoDB使用了多少后台线程来实现清除操作(将所有事务都不再需要的待删除行删除掉)

innodb_purge_batch_size=

重做日志记录的数量

innodb_max_purge_lag=

InnoDB维护着一个清除线程,它可以清除删除操作或更新操作标记的待删除的行。如果小批量行被插入和删除的频率差不多相同,啊呢么清除线程可能会落后,进而导致大量待删除行不能及时清除,而占用着本应该释放的空间。innodb_max_purge_lag变量控制着如何延迟INSERT、DELETE和UPDATE语句,让它们适当放慢速度以便清除线程能够追上它们的进度。默认为0(即不延迟)。如果把此变量设置为一个非零值,那么延迟大约是((n/innodb_max_purge_lag) x10 ) – 5毫秒,其中的n是在执行过程中会把一些行标记为待删除的事务的数量

innodb_file_per_table

如果此变量被设置为0(默认值),InnoDB将在其系统表空间里创建新表。如果此变量被设置为1,InnoDB将为每个新表分别创建一个独立表空间:在数据库目录里为每一个新表单独创建一个.ibd文件来存放该表的内容。在这种情况下,系统表空间只会用于InnoDB数据目录条目,而不会用于数据或索引存储。

此变量只影响InnoDB如何创建新表。不管如何更改此变量的值,InnoDB存储引擎总是可以访问已经在系统表空间或独立表空间里创建的表

innodb_autoextend_increment=

当某个自扩展表空间快要被填满时,InnoDB存储引擎将自动使用此变量的值作为第增量去增加那个表空间的大小。指定值的单位为MB。此变量的默认值是8,最大值是1000

innodb_file_format=

如果启用了innodb_file_per_table,则它指的是InnoDB新表所使用的格式。默认格式为Antelope;另一个允许值为Barracuda。使用Barracuda可以启用不被Antelope支持的功能,如COMPRESSED行格式

innodb_file_format_check=

InnoDB系统表空间包含有一个标志,它表示的是表空间里使用的最高版本的文件格式。此变量会在服务器启动时设置,主要用于控制InnoDB是否要检查这个标志,以确定此格式版本比InnoDB支持的那个版本更高。如果启用此变量(默认值),并且该格式版本更高,那么启动会失败,并产生一个错误。如果该格式版本不够高,那么InnoDB会将innodb_file_format_max设置成该格式

innodb_file_format_max=

参考innodb_file_format_check的描述

innodb_stats_on_metadata

InnoDB是否要更新与那些与表元数据访问语句(如SHOW INDEX或SHOW TABLE STATUS)有关的统计信息,或者更新那些与访问STATISTICS表和执行TABLES INFORMATION_SCHEMA语句所得到的各张表有关的统计信息。其效果与运行ANALYZE TABLE相类似。默认值为ON

innodb_stats_sample_pages=

在MySQL 5.5里,它指的是用于估计统计信息的InnoDB样本的索引页数量。默认值为8。自MySQL 5.6.3起,此变量已被弃用,请使用innodb_stats_transient_sample_pages

innodb_stats_method=

服务器在InnoDB表统计器索引键的分布概率时,应该把NULL值视为相同,还是视为不同。可设置的值包括有:nulls_equal(所有的NULL值在同一个组里)、nulls_unequal(每个NULL值单独成为一组)或nulls_ignored(忽略NULL值)

timed_mutexes

设置是否要搜集InnoDB的互斥时间信息,默认值为OFF

innodb-status-file 设置在data目录中的innodb_status
innodb_fast_shutdown=

当此变量的值为0或1时,它表示的是InnoDB是否使用其较快速的关机方法(它会跳过某些正常情况下会执行的操作)。当取值为2时,InnoDB会刷新其日志,然后停止

innodb_force_load_corrupted

设置InnoDB在启动时是否加载已标记为损坏的表

innodb_force_recovery=

此变量的值通常为0,但是可以被设置为1~6的某个值,以便让服务器在崩溃后即使InnoDB恢复失败也可以再次启动

innodb_checksums

设置InnoDB表是否启用校验计算

autocommit=

设置事务处理的自动提交模式。默认值为1,因此自动提交功能是启用的,并且语句会立即生效。本质上,每条语句都是其自身的事务。将这个值设置为 0,可以禁用自动提交功能,如此一来,后续语句便只有等到提交完成(可以使用 COMMIT 语句,或者将 autocommit 设置为1来完成提交)之后才能生效。如果提交还未发生,则可以通过 ROLLBACK 来取消事务里的语句。将 autocommit 这时为1,可以重新启用自动提交(并且会隐式提交所有挂起的事务)

transaction-isolation=

可供设置的值:READ-UNCOMMITTED、READ-COMMITTED、REPEATABLE-READ、SERIALIZABLE,默认的值为: REPEATABLE-READ,事务隔离级别设置的不同,对二进制日志登记格式影响非常大

transaction_prealloc_size=

为处理构成某个事务的语句而分配的那个缓冲区的大小。与那些由transaction_alloc_block_size变量控制的内存分配块不同,这个缓冲区在最后两条语句之间不会被释放

transaction_alloc_block_size=

为处理这样一些语句而分配的临时内存的块大小:在事务提交之时,在将事务写入二进制日志之前,需要存储为事务的一部分的语句

completion_type=

事务结束类型:

        1、如果该值为0(默认),COMMIT和ROLLBACK不受影响;

        2、如果该值为1,COMMIT和ROLLBACK分别等同于COMMIT AND CHAIN和ROLLBACK AND CHAIN。(新事务用刚刚结束的事务相同的间隔等级立即启动);

        3、如果该值为2,COMMIT和ROLLBACK分别等同于COMM它RELEASE和ROLLBACK RELEASE(事务终止后,服务器断开);

innodb_support_xa 设置支持XA事务
innodb_table_locks

当禁用自动提交模式时,InnoDB会如何处理LOCK TABLE语句,以获得InnoDB表的写锁。如果此变量的值是ON(默认值),InnoDB将申请到一个内部表锁。如果此变量的值是OFF,InnoDB要一直等到没有任何其他线程锁定那个表时才能执行LOCK TABLE语句。禁用此变量可以在一定程度上防止应用程序在自动提交模式已被禁用的情况下发出LOCK TABLE语句时遭遇死锁

innodb_lock_wait_timeout=

设置等待某个事务锁的秒数

innodb_locks_unsafe_for_binlog

设置InnoDB如何处理索引行锁定

innodb_spin_wait_delay=

设置旋转锁的两次轮询之间的最大等待值

innodb_sync_spin_loops=

设置线程在被挂起之前等待InnoDB释放互斥信号的次数

innodb_commit_concurrency=

设置可以同时提交多少个线程

innodb_thread_concurrency=

设置InnoDB尝试维护的线程数量上限

innodb_concurrency_tickets=

当某个线程想进入InnoDB时,只有当线程数量小于innodb_commit_concurrency变量设置的上限时它才能成功。否则,该线程将排队等候直到线程的数量降低到那个上限以下。一旦线程被允许进入,它将可以不受限制地离开和重新进入InnoDB,这种自由往返的最大次数由innodb_concurrency_tickets变量的值决定。默认值为500

innodb_replication_delay=

如果在从服务器上已达到innodb_thread_concurrency表明的那个限制,那么此变量便是复制线程的延迟时间(单位为毫秒)。默认值为0

innodb_thread_sleep_delay=

设置InnoDB线程在被放入InnoDB等待队列之前休眠的时间(单位为毫秒)

innodb_rollback_on_timeout

设置InnoDB存储引擎在事务超时时的行为

innodb_rollback_segments=

在一个事务里,InnoDB在系统表空间里会使用多少回滚段。默认值为128。此变量是在MySQL 5.5.11里引入的。在5.6.3里,它被替换成了innodb_undo_logs

myisam_data_pointer_size=

设置MyISAM索引文件的行指针的字节大小

myisam_use_mmap

设置服务器在读写MyISAM表时是否需要使用内存映射

keep_files_on_create

如果在创建MySAM表的CREATE TABLE语句里明确给出了DATA DIRECTORY或INDEX DIRECTORY选项,并且服务器在给定的目录里分别找到了一个已有的数据文件或索引文件,那么它会返回一个错误。当没有使用DATA DIRECTORY或INDEX DIRECTORY选项来指定数据文件或索引文件的存放位置时,keep_files_on_create变量会控制服务器如何创建MyISAM表。如果此变量的值为OFF(默认值),并且服务器找到了一个已有的.MYD数据文件或.MYI索引文件,那么它会覆盖该文件。如果此变量的值为ON,服务器会返回一个错误

myisam-block-size= 设置被MyISAM索引页使用的块大小
delay-key-write= 仅用于MyISAM表,且要求在创建表时使用了DELAY_KEY_WRITE选项。在启用时,key buffer不会在每一次索引更新时都予以清空,而是在表关闭时才执行key buffer清空操作。OFF表示忽略DELAY_KEY_WRITE,ON表示MySQL接受CREATE TABLE时使用的任何DELAY_KEY_WRITE选项,ALL表示所有新打开的表遵循此特性
preload_buffer_size

设置MySQL服务器在使用LOAD INDEX语句预加载有关索引时会分配一个多大的缓冲区

myisam_stats_method=

服务器在为MyISAM表统计其索引键的分布概率时,应该把NULL值视为相同,还是视为不同。可设置的值包括有:nulls_equal(所有的NULL值在同一个组里)、nulls_unequal(每个NULL值单独成为一组)或nulls_ignored(忽略NULL值)

myisam-recover-options=

用于创建启动MySQL时MyISAM 的自动恢复。myisam‐recover‐options选项能使用以下值:

DEFAULT:不用备份,强制,或快速检查进行恢复。

BACKUP:如果数据文件在恢复时被更改,将MYD 文件的备份保存为 tbl_name‐datetime.BAK。

FORCE:即使会从.MYD 文件丢失多于一行仍运行恢复。

QUICK:如果没有任何delete块就不检查行。

myisam_repair_threads=

设置在修复操作过程中用来创建MyISAM表使用的线程数

key_buffer_size=

设置用于缓存MyISAM表索引块的缓冲区大小

key_cache_block_size=

设置MyISAM键缓存的块大小

key_cache_age_threshold=

设置在被移到暖子链之前,未使用的缓冲块在MyISAM键缓存的热子链里可以保留多久

key_cache_division_limit=

在MySQL的Key Cache中所使用的LRU算法并不像传统的算法一样仅仅只是通过访问频率以及最后访问时间来通过一个唯一的链表实现,而是将其分成了两部分。一部分用来存放使 用比较频繁的Hot Cache Lock(Hot Chain),被称作Hot Area,另外一部分则用来存放使用不太频繁的Warm Cache Block(Warm Chain),也被称作Warm Area。这样做的目的主要是为了保护使用比较频繁的Cache Block更不容易被换出。而key_cache_division_limit参数则正是用于告诉MySQL该如何划分整个Cache Chain划分为Hot Chain和Warm Chain两部分,参数值为Warm Chain占整个Chain 的百分比值。设置范围1~100,系统默认为100,也就是只有Warm Chain

read_buffer_size=

设置对表进行顺序扫描的那个线程所使用的缓存区的大小

read_rnd_buffer_size= 设置在排序后,读取结果数据的缓冲区大小
delayed_queue_size= 在某个特定的管理程序队列中有多少个行未执行,则INSERT DELAYED处理线程会等待直到队列中有空间为止,防止mysqld不会把所有存储器都用于被延迟的存储队列
max_delayed_threads=

设置为处理INSERT DELAYED语句而允许创建的最大线程数

delayed_insert_limit= 插入delayed_insert_limit 延迟行后,INSERT DELAYED 处理器线程检查是否有挂起的SELECT语句。如果有,在继续插入延迟的行之前,允许它们先执行
delayed_insert_timeout= INSERT DELAYED 处理器线程的队列中没有多余的行时表被解锁,多长时间内没有收到新的INSERT DELAYED,则终止
ft_boolean_syntax=

使用IN BOOLEAN MODE执行的布尔全文搜索支持的操作符系列,

默认变量值为 '+ -><()~*:""&|'。更改这些值的规则是:

1、操作符函数由其在字符串内的位置决定。

2、替换值必须是14个字符。

3、每个字符必须为ASCII码非文字数字字符。

4、第1个或第2个字符必须为空格。

5、除非语句在第11个字符和第12个字符处引用了操作符,否则不允许复制。这两个字符可以不相同,但这是唯一可能的两个。

6、位置10、13和14(默认设置为‘:’、‘&’和‘|’)保留用于将来扩展

ft_max_word_len=

ULLTEXT索引中所包含的字的最大长度。

注释:更改该变量后必须重建FULLTEXT索引。应使用REPAIR TABLE tbl_name QUICK

ft_min_word_len=

FULLTEXT索引中所包含的字的最小长度。

注:更改该变量后必须重建FULLTEXT索引。应使用REPAIR TABLE tbl_name QUICK

ft_query_expansion_limit= 使用WITH QUERY EXPANSION进行全文搜索的最大匹配数
ft_stopword_file=

用于读取全文搜索的停止字清单的文件。该文件中的所有字都会用到;注释不重要。默认情况下,使用内嵌式停止字清单(如myisam/ft_static.c文件中所定义)。将该变量设置为空字符串('')则禁用停止字过滤。

注:更改该变量或停止字文件的内容后必须重建FULLTEXT索引。应使用REPAIR TABLE tbl_name QUICK

gdb 为SIGINT安装一个中断处理器(需要^c停止mysqld来设置断点),并且禁止堆栈跟踪和核心文件处理
bulk_insert_buffer_size= MyISAM使用专用树状缓存来使INSERT、SELECT、INSERT ... VALUES (...)、(...)和LOAD DATA INFILE的大块插入更快。该变量用每线程的字节数限制缓存树的大小。将它设置为0禁用优化。注:只有向非空表添加数据时才使用该缓存,默认值是8MB
myisam_sort_buffer_size=

在执行类似ALTER TABLE、CREATE INDEX和REPAIR TABLE这样的操作期间,需要分配缓冲区,以便对MyISAM表的索引进行排序。此变量指定的便是该缓冲区的大小

myisam_max_sort_file_size=

对于REPAIR TABLE、ALTER TABLE或LOAD DATA等语句,在对MyISAM表进行重建时,既可以使用一个临时文件,页可以使用键缓存。具体使用哪一种方法由这个变量的值来决定。如果临时文件的大小可能会大于这个值,则需要使用键缓存

myisam_mmap_size=

设置压缩时的MyISAM表文件在进行内存映射时使用的最大内存量

external-locking

外部锁定用于多进程条件下为MyISAM数据表进行锁定。当外部锁定(external-locking)起作用时,每个进程若要访问数据表,则必须等待之前的进程完成操作并解除锁定。由于服务器访问数据表时经常需要等待解锁,因此在单服务器环境下external locking会让MySQL性能下降

skip-external-locking 禁用外部锁定
concurrent_insert=

对于在数据文件的中间没用空洞的MyISAM表,MySQL服务器允许在对已有行进行检索的同时在该表的末尾插入新行。此变量控制着服务器是否允许并发插入。此变量的值为0(或NEVER)时,会禁用此功能。此变量的值为1(或AUTO)时,会启用此功能。此变量的值为2(或ALWAYS)时,会对所有的MyISAM表启用并发插入,不管它们的数据文件里是否有空洞;此时,新行将被添加到正被使用的那个表的末尾,或者插到空洞处。默认值为1

skip-concurrent-insert 禁用concurrent-insert
max_write_lock_count=

在对某个表使用了max_write_lock_count个写锁定之后,对于那些正在等待获得该表读锁的语句,服务器将适当提升它们的优先级

low-priority-updates 给DML比SELECT更低的优先级
performance_schema= 开启performance_schema性能优化的引擎
performance_schema_events_waits_history_long_size= events_waits_history_long表的行数
performance_schema_events_waits_history_size= events_waits_history表的每个线程的行数
performance_schema_max_cond_classes= 条件工具的最大数量
performance_schema_max_cond_instances= 条件工具对象的最大数量
performance_schema_max_file_classes= 文件工具的最大数量
performance_schema_max_file_handles= 打开文件对象的最大数量
performance_schema_max_file_instances= 工具文件对象的最大数量
performance_schema_max_mutex_classes= 互斥锁工具的最大数量
performance_schema_max_mutex_instances= 互斥锁对象的最大数量
performance_schema_max_rwlock_classes= 读写锁工具的最大数量
performance_schema_max_rwlock_instances= 读写锁对象的最大数量
performance_schema_max_table_handles= 打开表对象的最大数量
performance_schema_max_table_instances= 打开表对象工具的最大数量
performance_schema_max_thread_classes= 线程工具的最大数量
performance_schema_max_thread_instances= 线程对象工具的最大数量

2、使用localhost登录(即不指定ip和端口,直接使用:mysql -uroot -p登录)时,如果报错找不到mysql.sock,是因为如果不指定路径,总是会去找/tmp目录下的mysql.sock文件。可以使用如下两种方法指定,但前提一定要确保在指定的路径中存在mysql.sock:

        1)可以使用--defaults-extra-file指定my.cnf配置文件,该配置文件中的client指定了mysql.sock路径;

        2)使用-S参数直接指定mysql.sock的路径;

3、修改root初始密码的两种方法:

        1)使用随机生成的密码登录mysql,然后执行:alter user 'root'@'localhost' identified by 'root@123';其中root@123’为新密码; 

        2)使用随机生成的密码登录mysql,然后执行:set password=password('root@123');其中root@123’为新密码; 

        3)加参数--skip-grant-tables,跳过授权表执行mysqld_safe启动mysql后,除了可以使用1、2种方法的修改语句,还可以使用:update user set authentication_string=password('root@123') where user='root';之后再执行flush privileges;即可。

4、mysql默认只允许localhost登录,因为在mysql系统用户表中默认设置的是:

1)如果允许从任意ip访问该mysql服务器的任何数据库的任何表,可以执行:

grant all privileges on *.* to root@'%' identified by 'root@123';

flush privileges;

2)如果只允许从ip是192.168.1.6访问该mysql服务器的任何数据库的任何表,可以执行:

grant all privileges on *.* to root@'192.168.1.6' identified by 'root@123';

flush privileges;

3)如果只允许从ip是192.168.1.6访问该mysql服务器的test数据库,可以执行:

grant all privileges on test.* to root@'192.168.1.6' identified by 'root@123';

flush privileges;

4)如果只允许从ip是192.168.1.6访问该mysql服务器的test数据库中的tb1表,可以执行:

grant all privileges on test.tb1 to root@'192.168.1.6' identified by 'root@123';

flush privileges;

5、以下是mysqld_safe的参数说明

Format Description
--basedir Path to MySQL installation directory
--core-file-size Size of core file that mysqld should be able to create
--datadir Path to data directory
--defaults-extra-file Read named option file in addition to usual option files
--defaults-file Read only named option file
--help Display help message and exit
--ledir Path to directory where server is located
--log-error Write error log to named file
--malloc-lib Alternative malloc library to use for mysqld
--mysqld Name of server program to start (in ledir directory)
--mysqld-version Suffix for server program name
--nice Use nice program to set server scheduling priority
--no-defaults Read no option files
--open-files-limit Number of files that mysqld should be able to open
--pid-file Path name of server process ID file
--plugin-dir Directory where plugins are installed
--port Port number on which to listen for TCP/IP connections
--skip-kill-mysqld Do not try to kill stray mysqld processes
--skip-syslog Do not write error messages to syslog; use error log file
--socket Socket file on which to listen for Unix socket connections
--syslog Write error messages to syslog
--syslog-tag Tag suffix for messages written to syslog
--timezone Set TZ time zone environment variable to named value
--user Run mysqld as user having name user_name or numeric user ID user_id

参考:http://www.hicoogle.com/mysql5-5-database-my-cnf-configuration-file-variable-description.html

猜你喜欢

转载自blog.csdn.net/lzghxjt/article/details/81437758