windows环境下安装MySQL8

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 数据表名;

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×