目录
6.2.2.重新设置sql_mode,删除ONLY_FULL_GROUP_BY
9.1.2.1.判断是否有C:\mysql_backup文件夹,没有创建文件夹
9.1.2.2.if not exist判断文件是否不存在,如果文件夹不存在则新建文件夹
9.1.4.6.程序或脚本浏览我们创建的bat文件,点击下一步(浏览的路径不能有中文)
1.官网下载
mysql官网最新版本下载地址:https://dev.mysql.com/downloads/mysql/
mysql官网所有版本下载地址:https://downloads.mysql.com/archives/community/
进入官网点击Mysql8.0
将页面拉到最下面选择选择操作系统后,选择要下载的版本点击 Downloads
注:我选择安装的版本为8.0.32(目前等保认证通过版本)。如果不想要这个的版本也可以进Archives页面选择其他版本
点击页面下面的 No thanks, just start my download 开始下载
2.配置环境变量
打开系统环境变量
在系统变量-->Path配置mysql bin目录,
我的路径为:C:\mysql-8.0.32-winx64\bin
3.新建一个my.ini的文件
在C:\mysql-8.0.32-winx64\bin 目录下新建一个my.ini的文件
(注:可以直接复制下面的,涉及到存放目录的可以根据自己实际情况做更改)
my.ini内容如下:
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=E:\\mysql-8.0.13-winx64
# 切记此处一定要用双斜杠\\,单斜杠这里会出错。
# 设置mysql数据库的数据的存放目录
datadir=E:\\mysql-8.0.13-winx64\\Data
# 此处同上
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8
到这里,数据库就配置完成了。接下来就可以启动数据库的服务了
4.启动服务
必须以管理员身份运行cmd
进入mysql的bin目录下
输入命令:mysqld --initialize --console
等待一会出现几行代码,root@localhost:后面的是随机生成的数据库初始密码,将初始密码记下来后面会用到。
注:没记住初始密码的话,删掉初始化的 data目录,再执行一遍初始化命令又会重新生成。
初始化完毕后,执行mysqld --install
执行命令net start mysql,启动服务
也可以在服务中启动mysql,将mysql设置为自启动方式
5.修改密码
初始密码构成太过于复杂,修改为一个自己简单易记的密码。
5.1.方法一
服务启动成功后,输入mysql -u root -p 回车,输入初始密码
执行:alter user root@localhost identified by '密码';
alter user root@localhost identified by '123456';
5.2.方法二
打开Navicat Premium,连接配置好的mysql数据库,第一次连接时会提示修改新密码
点击确定后,点击左边相对应的数据库会弹出新密码输入框,输入后点击确定即可
6.mysql8安装遇到问题
6.1.找不到vcruntime140_1.dll文件
将vcruntime140_1.dll文件放入到C:\Windows\SysWOW64目录下
6.2.MySQL8.0 不能使用group by解决方法
6.2.1.使用SQL查询sql_mode
输入命令:
select @@global.sql_mode;
查询结果:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
6.2.2.重新设置sql_mode,删除ONLY_FULL_GROUP_BY
先登录
mysql -u root -p
123456
输入命令如下:
set @@global.sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
注意:如果jar包还是报 group by 的错误,重启jar包即可
6.3.升级数据库后导入数据可能出现的问题
delete_flag导入后默认值没了
需手动在数据库中加上默认值
Id 自增没有了,需手动加上
7.创建用户
create user 'ak_base_company@localhost' identified by 'ak_base_company';
flush privileges;
CREATE DATABASE ak_base_company;
grant all privileges on ak_base_company.* to 'ak_base_company' identified by 'ak_base_company';
flush privileges;
8.mysql设置最大连接
最近的项目用了动态切换数据源起初感觉还好,后来发现每次切换数据库都会创建一个新的连接,这样就导致大量的sleep线程。而mysql的默认sleep时间是28800秒。。。。默认最大连接数为151,这就导致经常会出现mysql too many connection 的异常,需要重新启动项目太麻烦于是就搜了些解办法
8.1.最大连接数
查看最大连接数:
show variables like "max_connections";
修改最大连接数:
set GLOBAL max_connections=5000;
commit;
8.2.最大睡眠时间
查看最大睡眠时间:
show global variables like 'wait_timeout';
修改最大睡眠时间:睡眠300秒后自动杀死线程。
set global wait_timeout=300;
8.3.关闭线程等待的秒数
查看mysql在关闭一个线程前要等待的秒数:
show global variables like 'interactive_timeout';
修改等待时间:
set global interactive_timeout=500;
注意第二部和第三不要一起设置不然不起作用。
此方法比较笨拙偷懒数据库一旦重启就会初始回原来的默认数值所以每次重启都要重新设置。当然也可以直接就该mysql的配置文件
报错时mysql大多是登录不上的所以先执行重启命令
8.4.设置永久生效
找到mysql配置文件添加配置
修改最大睡眠时间
wait_timeout = 300
修改等待时间
interactive_timeout = 500
然后重启数据库
9.自动备份
9.1.创建bat文件
9.1.1.bat文件脚本内容
rem ******MySQL backup start******
@echo off
if not exist c:\mysql_backup md c:\mysql_backup
forfiles /p "c:\mysql_backup" /m backup_*.sql -d -7 /c "cmd /c del /f @path"
set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%"
cd C:\Program Files\MySQL\MySQL Server 5.7\bin\
mysqldump --opt --single-transaction=TRUE --user=akchinacoal_lims --password=akchinacoal_lims##@@ --host=localhost --protocol=tcp --port=3306 --default-character-set=utf8 --single-transaction=TRUE --routines --events "akchinacoal_lims" > c:\mysql_backup\backup_%Ymd%.sql
@echo on
rem ******MySQL backup end******
9.1.2.bat脚本分析
9.1.2.1.判断是否有C:\mysql_backup文件夹,没有创建文件夹
3.if not exist c:\mysql_backup md c:\mysql_backup
9.1.2.2.if not exist判断文件是否不存在,如果文件夹不存在则新建文件夹
4. forfiles /p "c:\mysql_backup" /m backup_*.sql -d -7 /c "cmd /c del /f @path"
9.1.2.3.过期备份进行删除
forfiles 用来对备份目录下的过期备份进行删除。“C:\mysql\MySQL_backup”是备份文件所在的路径,可以自行修改。“backup_*.sql”指的是该路径下所有以“backup_”开头,以“.sql”作为后缀的数据库备份文件。而后面的数字“7”表示7天过期。
9.1.2.4.时间获取
5.set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%"
9.1.2.5.MySQL自带的备份工具
C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqldump
这一行命令就是调用MySQL自带的备份工具了,注意这个路径必须写成你自己的“mysqldump.exe”所在的路径,一般都是在MySQL安装路径的/bin目录下。
-user=root
连接MySQL数据库服务的账户,通常该账户必须具备数据库备份操作的权限。为了简便我们使用了root,但是在实际生产环境中并不建议使用root账户,避免账户和密码泄露,从而造成不必要的麻烦。
--password=123456
这是连接MySQL数据库服务的密码
--host=127.0.0.1
这是数据库服务所在的服务器ip地址
--port=3306
这是数据库服务所在的服务器的端口号
events "akglobe_zthwrl" > c:\mysql_backup\backup_%Ymd%.sql
events参数即实现了将数据库备份到一个指定的文件这一操作。"akglobe_zthwrl"是需要做备份的数据库,而大于号“>”右边的就是我们的备份文件所保存的服务器目录和文件名了。
9.1.3.备份脚本简单写法
mysqldump -u root –proot "akglobe_zthwrl" > "C:\mysql\MySQL_backUp\backup_%Ymd%.sql"
9.1.4.设定Windows任务
9.1.4.1.添加Windows计划任务
win+r,输入taskschd.msc 打开任务计划程序弹框任务管理器点击创建基本任务
将自己的文件夹添加进去即可