1.数据库my.cnf 配置
[root@localhost /]# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
init-connect='SET NAMES utf8mb4'
character-set-server=utf8mb4
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
#设置2进制日志文件目录
log-bin=mysql-bin
#指定索引的缓冲区大小,4G内存下设置256或者384合适
key_buffer_size = 16G
#每打开一个表,都会读入数据到table_open_cache中
table_open_cache = 2048
#用于ORDER BY时的缓冲大小,是针对的每个连接,所以不能太大
sort_buffer_size = 8M
#用于表间关联缓存的大小
join_buffer_size = 1M
#对表进行顺序扫描的请求
read_buffer_size = 4M
# tmp_table_size 的默认大小是 32M。如果一张临时表超出该大小,MySQL产生一个 The table tbl_name is full 形式的错误,如果你做很多高级 GROUP BY 查询,增加 tmp_table_size 值。
tmp_table_size = 246M
max_heap_table_size = 246M
#索引缓存大小: 它决定了数据库索引处理的速度,尤其是索引读的速度
key_buffer_size = 512M
#任意顺序读取行时
read_rnd_buffer_size = 16M
#查询到内容向网络传输时
net_buffer_length = 8K
#保存在缓存中的线程数量,
thread_cache_size = 300
##由于项目中一些表的增删改相对比较频繁,但是查询也占据了很大的一部分,还需要项目运行后观察一段时间
query_cache_size= 1024M
#指定单个查询能够使用的缓冲区大小,缺省为1M
query_cache_limit = 2M
# 和cpu的核心数有2倍的关系,我使用的是云服务器,设置这个参数后就启动不起来了
#thread_concurrency = 12
#提交事务后数据写入磁盘的时间点,设置为2可以对没有强烈的安全要求机制下,对速度提高很大
innodb_flush_log_at_trx_commit = 2
#批量插入数据缓存大小,可以有效提高插入效率,默认为8M
bulk_insert_buffer_size = 64M
# MyISAM表发生变化时重新排序所需的缓冲
myisam_sort_buffer_size = 128M
# MySQL重建索引时所允许的最大临时文件的大小 (当 REPAIR, ALTER TABLE 或者 LOAD DATA INFILE).
# 如果文件大小比此值更大,索引会通过键值缓冲创建(更慢)
myisam_max_sort_file_size = 10G
# 如果一个表拥有超过一个索引, MyISAM 可以通过并行排序使用超过一个线程去修复他们.
# 这对于拥有多个CPU以及大量内存情况的用户,是一个很好的选择.
myisam_repair_threads = 1
#自动检查和修复没有适当关闭的 MyISAM 表
myisam_recover
interactive_timeout = 120
wait_timeout = 120
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
2.启动方式
2.1.Linux
/etc/init.d/mysql restart
2.2.Mac
sudo /usr/local/mysql/support-files/mysql.server start
sudo /usr/local/mysql/support-files/mysql.server stop
sudo /usr/local/mysql/support-files/mysql.server restart
2.3.Windows
启动服务
3.定时任务
3.1.定时备份数据库
mysqldump -uroot -p"***" --events --ignore-table=mysql.events --all-databases -h 127.0.0.1 | gzip > /yourpath/mysql.bak.`date +%Y%m%d%H%M%S`.sql.gz
3.2.定时SQL任务
mysql -uroot -p"***" /yourpath/crontab_mysql.`date +%Y%m%d%H%M%S`.log
其中“/yourpath/crontab_mysql.sql”为需要执行的sql语句。
4.常见问题
4.1.Access denied for user 'root'@'localhost' (using password: YES)
# mysqladmin -uroot -p password 'newpassword'
Enter password:
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: YES)'
# /etc/init.d/mysql stop
# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
# mysql -u root mysql
mysql> UPDATE user SET password=PASSWORD('newpassword') where USER='root';
mysql> FLUSH PRIVILEGES;
mysql> quit
# /etc/init.d/mysql restart
# mysql -uroot -p
Enter password:
注意,5.7版本数据库密码为“authentication_string”字段。
4.2.The user specified as a definer ('root'@'%') does not exist
权限问题,授权 给 root 所有sql 权限
mysql> grant all privileges on *.* to root@"%" identified by ".";
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)