环境:CentOS7版本:
本文仅介绍 rpm 安装方式
mysqld
的 systemd 服务。systemctl restart mysqld
,重启 mysql%
SELECT
,INSERT
,UPDATE
等,如果要授予所的权限则使用ALL
*
表示,如*.*
'pig'@'%'
授权的时候是这样的(或类似的):GRANT SELECT ON test.user TO 'pig'@'%'
,则在使用REVOKE SELECT ON *.* FROM 'pig'@'%';
命令并不能撤销该用户对 test 数据库中 user 表的SELECT
操作。相反,如果授权使用的是GRANT SELECT ON *.* TO 'pig'@'%';
则REVOKE SELECT ON test.user FROM 'pig'@'%';
命令也不能撤销该用户对 test 数据库中 user 表的Select
权限。SHOW GRANTS FOR 'pig'@'%';
查看。vi /etc/my.cnf
,添加如下配置:server-id
- 服务器 ID 号。在主从架构中,每台机器的 ID 必须唯一。log_bin
- 同步的日志路径及文件名,一定注意这个目录要是 mysql 有权限写入的;注意:需要记录下File
和Position
,后面会用到。
vi /etc/my.cnf
,添加如下配置:server-id
- 服务器 ID 号。在主从架构中,每台机器的 ID 必须唯一。log_bin
- 同步的日志路径及文件名,一定注意这个目录要是 mysql 有权限写入的;MASTER_LOG_FILE
和 MASTER_LOG_POS
参数要分别与 show master status
指令获得的 File
和 Position
属性值对应。Slave_IO_Running
Slave_SQL_Running
注:设置 slave 服务器为只读,并不影响主从同步。
大部分情况下,默认的基本配置已经足够应付大多数场景,不要轻易修改 Mysql 服务器配置,除非你明确知道修改项是有益的。
datadir
- mysql 数据文件所在目录socket
- scoket 文件pid_file
- PID 文件user
- 启动 mysql 服务进程的用户port
- 服务端口号,默认 3306
default_storage_engine
- mysql 5.1 之后,默认引擎是 InnoDBdefault_time_zone
- 默认时区。中国大部分地区在东八区,即 +8:00
character_set_server
- 数据库默认字符集collation_server
- 数据库字符集对应一些排序等规则,注意要和 character_set_server 对应log_error
- 错误日志文件地址slow_query_log
- 错误日志文件地址innodb_buffer_pool_size
- InnoDB 使用一个缓冲池来保存索引和原始数据,不像 MyISAM。这里你设置越大,你在存取表里面数据时所需要的磁盘 I/O 越少。innodb_log_file_size
- 日志文件的大小。默认值:48M,建议值:根据你系统的磁盘空间和日志增长情况调整大小innodb_file_per_table
- 说明:mysql5.7 之后默认开启,意思是,每张表一个独立表空间。默认值 1,开启。innodb_flush_method
- 说明:控制着 innodb 数据文件及 redo log 的打开、刷写模式,三种模式:fdatasync(默认),O_DSYNC,O_DIRECT。默认值为空,建议值:使用 SAN 或者 raid,建议用 O_DIRECT,不懂测试的话,默认生产上使用 O_DIRECTfdatasync
:数据文件,buffer pool->os buffer->磁盘;日志文件,buffer pool->os buffer->磁盘;O_DSYNC
: 数据文件,buffer pool->os buffer->磁盘;日志文件,buffer pool->磁盘;O_DIRECT
: 数据文件,buffer pool->磁盘; 日志文件,buffer pool->os buffer->磁盘;key_buffer_size
- 指定索引缓冲区的大小,为 MYISAM 数据表开启供线程共享的索引缓存,对 INNODB 引擎无效。相当影响 MyISAM 的性能。tmp_table_size
- 内存临时表的最大值,默认 16M,此处设置成 128Mmax_heap_table_size
- 用户创建的内存表的大小,默认 16M,往往和 tmp_table_size
一起设置,限制用户临时表大小。超限的话,MySQL 就会自动地把它转化为基于磁盘的 MyISAM 表,存储在指定的 tmpdir 目录下,增大 IO 压力,建议内存大,增大该数值。query_cache_type
- 这个系统变量控制着查询缓存功能的开启和关闭,0 表示关闭,1 表示打开,2 表示只要 select
中明确指定 SQL_CACHE
才缓存。query_cache_size
- 默认值 1M,优点是查询缓存可以极大的提高服务器速度,如果你有大量的相同的查询并且很少修改表。缺点:在你表经常变化的情况下或者如果你的查询原文每次都不同,查询缓存也许引起性能下降而不是性能提升。max_connections
- 最大连接数,可设最大值 16384,一般考虑根据同时在线人数设置一个比较综合的数字,鉴于该数值增大并不太消耗系统资源,建议直接设 10000。如果在访问时经常出现 Too Many Connections 的错误提示,则需要增大该参数值thread_cache
- 当客户端断开之后,服务器处理此客户的线程将会缓存起来以响应下一个客户而不是销毁。可重用,减小了系统开销。默认值为 9,建议值:两种取值方式,open_files_limit
- MySQL 打开的文件描述符限制,默认最小 1024;/etc/security/limits.conf
和 /etc/security/limits.d/90-nproc.conf
Too many connections
错误。max_connections
来增加允许的最大连接数。/etc/my.cnf
配置文件,在 [mysqld]
添加以下配置:vim /etc/security/limits.conf
,添加 mysql 用户配置LimitNOFILE
是否配置的太小。time_zone
值为 SYSTEM
时,会取 system_time_zone
值作为协调时区,若得到的是 CST
那么 Java 会误以为这是 CST -0500
,因此会给出错误的时区信息(国内一般是CST +0800
,即东八区)。show variables like '%time_zone%';
命令查看 Mysql 时区配置:my.cnf
文件,在 [mysqld]
节下增加 default-time-zone='+08:00'
,然后重启。