MySQL8安装
MySQL的配置文件 my.ini
############# my.ini文件编码为ANSI格式 #############
############# my.ini文件编码为ANSI格式 #############
############# my.ini文件编码为ANSI格式 #############
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=C:/mysql-8.0.16
# 设置mysql数据库的数据的存放目录
datadir=C:/mysql-8.0.16/Data
# 允许最大连接数
# show global status like 'Max_used_connections'; MySQL服务器过去的最大连接数
# 理想设置 Max_used_connections / max_connections * 100% ≈ 85%
max_connections=2000
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使用的字符集默认为utf8mb4 因为不需要特殊字符,改成utf8即可
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password
# 忽略mysql的密码
#skip-grant-tables
# sql_mode,去掉了默认的ONLY_FULL_GROUP_BY,要不然会有大量的groupby报错
# [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column
# 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause;
# this is incompatible with sql_mode=only_full_group_by
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
#并发线程数,默认是0,表示不限制,如果线程小于64 可以默认设置,如果大于线程数,为了稳定 可以适当设置
#innodb_thread_concurrency=16
# 关闭bin-log日志,加上skip-log-bin 是关闭日志,开启日志的话,需要注释掉
#skip-log-bin
# MySQL开启bin-log后,调用存储过程或者函数以及触发器时,会出现错误号为1418的错误:
# ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL,or READS SQL DATA in its declaration and binary logging is enabled
# (you *might* want to use the less safe log_bin_trust_function_creators variable)
# 信任子程序的创建者,禁止创建、修改子程序时对SUPER权限的要求,设置log_bin_trust_routine_creators全局系统变量为1
log-bin-trust-function-creators=1
# 开启自动参数,了解 innodb_buffer_pool_size、innodb_log_file_size 、innodb_flush_method
# innodb_dedicated_server=ON 设置以后它其实只探测了服务器内存,所以目前只能自适应调整内存相关的三个参数
#innodb_dedicated_server=ON的情况下,如果还显式设置了 innodb_buffer_pool_size / innodb_log_file_size / innodb_flush_method 显示设置的这些参数会优先生效
# innodb_dedicated_server=ON
# 数据缓冲池,一般的公式如下
# show global variables like 'innodb_buffer_pool_size';
# show global status like 'Innodb_buffer_pool_pages_data';
# show global status like 'Innodb_buffer_pool_pages_total';
# show global status like 'Innodb_page_size';
# var percent = Innodb_buffer_pool_pages_data/Innodb_buffer_pool_pages_total*100%;
# percent > 95% 则增加 innodb_buffer_pool_size, 建议使用物理内存的 75%;
# percent < 95% 则减少 innodb_buffer_pool_size,建议设置大小为: Innodb_buffer_pool_pages_data* Innodb_page_size * 1.05 / (1024*1024*1024)
innodb_buffer_pool_size=2G
#事务日志
innodb_log_file_size =1G
#根据配置文件会限制server接受的数据包大小。
#有时候大的插入和更新会被max_allowed_packet 参数限制掉,导致失败。
max_allowed_packet=128M
#max_prepared_stmt_count 参数限制了同一时间在mysqld上所有session中prepared 语句的上限。
#它的取值范围为“0 - 1048576”,默认为16382。
#mysql对于超出max_prepared_stmt_count的prepare语句就会报Can't create more than max_prepared_stmt_count statements (current value: 16382)"错误。
max_prepared_stmt_count=1048576
# GROUP_CONCAT函数用于将多个字符串连接成一个字符串,在拼接成字符串时就会存在拼接长度的问题,mysql 默认的拼接最大长度为1024 个字节
group_concat_max_len=102400
#防止频繁的开关表
table_open_cache=9000
table_open_cache_instances=32
# 刷新到磁盘的方法
# innodb_flush_method=O_DIRECT_NO_FSYNC
# 禁用host缓存,解决需要 mysqladmin flush-hosts问题
skip_host_cache
# 禁用域名解析,刚安装好的时候要,先禁用掉,否则localhost无法连接,报错
# Host '::1' is not allowed to connect to this MySQL server
skip-name-resolve=1
max_connect_errors=1000
# MySQL wait_timeout 要略大于hikari maxLifetime=3600000(毫秒) 30秒
wait_timeout=3630
interactive_timeout=3630
[mysql]
# 设置mysql客户端默认字符集
# default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
# default-character-set=utf8
1、解压mysql-8.0.16.zip到 c:/mysql-8.0.16
2、拷贝my.ini到c:/mysql-8.0.16
3、以管理员方式打开cmd,切换到 C:\mysql-8.0.16\bin 目录
4、运行命令 mysqld --initialize --console,出现如下信息,其中数据库的随机密码就是:abVt0I=/<K%4
mysqld --initialize-insecure 可以是无密码模式
//Starting process with command:
//D:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe --defaults-file="D:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --console --initialize-insecure=on
C:\mysql-8.0.16\bin>mysqld --initialize --console
2019-07-23T04:10:30.475378Z 0 [System] [MY-013169] [Server] C:\mysql-8.0.16\bin\
mysqld.exe (mysqld 8.0.16) initializing of server in progress as process 1732
2019-07-23T04:10:34.723621Z 5 [Note] [MY-010454] [Server] A temporary password i
s generated for root@localhost: abVt0I=/<K%4
//如果出现如下错误,无法启动此程序,因为计算机中丢失 VCRUNTIME140_1.dll。尝试重新安装该程序以解决此问题。
需安装:
https://download.visualstudio.microsoft.com/download/pr/7239cdc3-bd73-4f27-9943-22de059a6267/003063723B2131DA23F40E2063FB79867BAE275F7B5C099DBD1792E25845872B/VC_redist.x64.exe
// 如果出现如下错误,请安装 微软官方提供的 vc_redist.x64/.x86.exe,如果是server2008的系统,需要先安装sp1的补丁
Server 2008 R2 SP1
补丁地址:https://download.microsoft.com/download/0/A/F/0AFB5316-3062-494A-AB78-7FB0D4461357/windows6.1-KB976932-X64.exe
vc_redist.x64/.x86.exe KB2999226补丁,名称:Windows6.1-KB2999226-x64.msu
补丁地址:https://download.microsoft.com/download/F/1/3/F13BEC9A-8FC6-4489-9D6A-F84BDC9496FE/Windows6.1-KB2999226-x64.msu
mysqld.exe - 系统错误
---------------------------
无法启动此程序,因为计算机中丢失 api-ms-win-crt-runtime-l1-1-0.dll。尝试重新安装该程序以解决此问题。
原因是缺少:Visual C++ Redistributable for Visual Studio 2015,搜索对应系统的版本安装就好
//如果出现下面的错误,是因为my.ini的格式改成了utf8,请另存my.ini文件编码为ANSI格式
① 本地计算机 上的 MySQL8 服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止。
② C:\mysql-8.0.16\bin>mysqld --initialize --console
mysqld: [ERROR] Found option without preceding group in config file c:\mysql-8.0.16\my.
ini at line 1.
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!
5、执行 mysqld --install MYSQL8 命令 安装服务,名称为MYSQL8,可以自定义,出现如下提示表示成功
C:\mysql-8.0.16\bin>mysqld --install MYSQL8
Service successfully installed.
指定ini:mysqld --install mysql10000 --defaults-file="D:\ProgramData\MySQL\MySQL Server 8.0\my.ini"
6、启动服务 net start mysql8
7、如果此时忘记了随机密码,请执行以下命令
//停止mysql8服务
net stop mysql8
//删除mysql8服务
sc delete mysql8
然后重新执行步骤 4
8、进入mysql命令行,执行 mysql -uroot -p 回车
提示Enter password: 输入上面的随机密码abVt0I=/<K%4 提示
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.16
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
9、修改初始密码
执行命令 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'dmjjy1710'; 最后的分号不能少
Query OK, 0 rows affected (0.00 sec)
10、创建%@root用户,开通远程访问,密码是dmjjy1710
执行下面的命令
CREATE USER 'root'@'%' IDENTIFIED BY 'dmjjy1710';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
flush privileges;
如果已经有root@%用户了 直接 使用 grant all privileges ON *.* to 'root'@'%' 授权即可
成功 ,这时候就可以用小绿(黄)叶,以新密码连接了!!!
11、数据库常用命令
-- 查询mysql的版本
show variables like '%version_%';
-- 列出所有数据库
show database;
-- 切换数据库
use '数据库名';
-- 列出所有表
show tables;
-- 显示数据表结构
describe 表名;
-- 删除数据库和数据表
drop database 数据库名;
drop table 数据表名;