syshlangWindows上安装 MySQL | 浪迹一生

所谓拥有,皆非束缚;所有过往,皆为序章。

0%

Windows上安装 MySQL

前言

      Window上安装MySQL主要有两种方式:第一种,MySQL安装包安装方式;第二种,绿色版压缩包安装方式。第一种方式相对简单,就是简单的点击下一步安装,不再赘述,本文主要讲解第二种方式的安装及安装过程中出现问题的解决方式。

下载安装包

     进入MySQL 下载,可以看到mysql的下载包列表。我选择的是5.7版本。

安装配置

  1. 将下载好的压缩包文件解压到指定目录,比如D:\mysql-5.7.20-winx64;

  2. 配置下 MySQL 的配置文件,打开刚刚解压的文件夹 D:\mysql-5.7.20-winx64 ,修改my-default.ini为my.ini,如果不存在直接创建 my.ini 配置文件,编辑 my.ini 配置以下基本信息:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    # For advice on how to change settings please see
    # http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
    # *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
    # *** default location during install, and will be replaced if you
    # *** upgrade to a newer version of MySQL.
    [client]
    port=3306
    default-character-set=utf8
    [mysqld]
    # 设置为自己MYSQL的安装目录
    basedir=D:\mysql-5.7.20-winx64
    # 设置为MYSQL的数据目录
    datadir=D:\mysql-5.7.20-winx64\data
    port=3306
    character_set_server=utf8
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
    #开启查询缓存
    explicit_defaults_for_timestamp=true
    #默认的存储引擎
    default-storage-engine=INNODB

    上面这个是5.7版本的配置,MySQL 8+配置如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    [client]
    # 设置mysql客户端默认字符集
    default-character-set=utf8

    [mysqld]
    # 设置3306端口
    port = 3306
    # 设置mysql的安装目录
    basedir=C:\\web\\mysql-8.0.11
    # 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错
    # datadir=C:\\web\\sqldata
    # 允许最大连接数
    max_connections=20
    # 服务端使用的字符集默认为8比特编码的latin1字符集
    character-set-server=utf8
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
  3. 启动 MySQL 数据库
    以管理员身份打开 cmd 命令行工具,切换目录:

    1
    C:\Users\sunys>cd D:\mysql-5.7.20-winx64\bin
  4. 初始化数据库:

    1
    D:\mysql-5.7.20-winx64\bin>mysqld --initialize --user=mysql--console

    此时会给管理账户root随机生成一个临时密码。

    • -initialize生成随机密码
    • -initialize-insecure生成空密码
    • 默认帐号root,后面的-user=mysql不更改
  5. 安装Mysql服务

    1
    D:\mysql-5.7.20-winx64\bin>mysqld --install MySQL
  6. 启动服务

    1
    D:\mysql-5.7.20-winx64\bin>net start MySQL
  7. 登录数据库
    当 MySQL 服务已经运行时, 我们可以通过 MySQL 自带的客户端工具登录到 MySQL 数据库中, 首先打开命令提示符, 输入以下格式的命名:

    1
    mysql -h 主机名 -u 用户名 -p
    • -h : 指定客户端所要登录的 MySQL 主机名, 登录本机(localhost 或 127.0.0.1)该参数可以省略;
    • -u : 登录的用户名;
    • -p : 告诉服务器将会使用一个密码来登录, 如果所要登录的用户名密码为空, 可以忽略此选项。

    我是登录本机的 MySQL 数据库,只需要输入以下命令即可:

    1
    D:\mysql-5.7.20-winx64\bin>mysql -u root -p

    按回车确认,输入之前生成的临时密码(如果生成空密码,这里不用输入密码直接回车即可)。

  8. 成功登录后需要首先修改root账户的随机密码

    1
    mysql>alter user 'root'@'localhost' identified by '密码';

    密码修改成功后即可使用自己设定的密码登录

卸载

卸载安装版方式安装的MySQL跟卸载普通的软件方式一样,直接在控制面板的程序和功能中卸载即可;绿色版安装的MySQL卸载方式如下:

  1. 在CMD命令行模式下,删除mysql服务

    1
    C:\Users\sunys>sc delete mysql
  2. regedit进入注册表,删除mysql相关的文件

问题及解决方案

缺少dll

安装版,遇到MSVCR120.dll文件丢失错误,如下图:

解决方案:下载 VC redist packages for x64,安装即可。

mysql无法启动

重新安装MySQL数据库之后无法启动,报错如下:

解决方案:

  1. 删除原来的mysql服务,进入mysql安装目录下的bin目录运行;

    1
    D:\mysql-5.7.20-winx64\bin>mysqld --remove MySQL
  2. 在mysql的根目录下, 清空data目录;

  3. 删除注册表,重启电脑(貌似执行这一步之后才会有效,否则还是不行);

  4. 重新执行安装命令并启动服务,启动成功。

Mysql连接报错:1130

数据库安装完成之后,使用localhost作为地址链接没问题,但是改为真实IP之后,Mysql连接报错:1130-host … is not allowed to connect to this MySql server。

这个问题是因为在数据库服务器中的mysql数据库中的user的表中没有权限,解决方案:

  1. 连接服务器:

    1
    D:\mysql-5.7.20-winx64\bin>mysql -u root -p
  2. 看当前所有数据库:

    1
    mysql>show databases;
  1. 进入mysql数据库:

    1
    mysql>use mysql;
  2. 查看mysql数据库中所有的表:

    1
    mysql>show tables;
  1. 查看user表中的数据:
    1
    mysql>select host, user from user;
  1. 修改user表中的Host:

    1
    mysql>update user set host='%' where user='ebm';
  2. 最后刷新一下:

    1
    mysql>flush privileges;
  3. 再查看user表中的数据:

    1
    mysql>select host, user from user;

可以看到,此时ebm的host已经发生了变化,再使用真实IP链接mysql,链接成功。

host列的值:

  • localhost 代表只可以本机连接
  • % 代表任何客户机都可以连接
  • 空 值等价于’%’
  • 固定IP 指定的IP可以连接
  • 通配符字符(“%”和“_”) 例如:192.168.1.% 就表示ip为192.168.1.前缀的客户端都可以连接
------------- The End -------------
  • 本文作者: 浪迹一生
  • 本文链接: https://www.syshlang.com/7d2a91d4/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!