前言

网上的教程有很多,基本上大同小异。但是安装软件有时就可能因为一个细节安装失败。我也是综合了很多个教程才安装好的,所以本教程可能也不是普遍适合的。

下载zip安装包:

http://pan.aiheadn.cn/1814666951/download/mysql-5.7.20-winx64.zip

http://pan.aiheadn.cn/1814666951/download/mysql-8.0.11-winx64.zip

解压zip包到安装目录

我的解压在了D:\mysql-8.0.11-winx64

配置初始化的my.ini文件

8.0.11

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=D:\\mysql-8.0.11-winx64 # 切记此处一定要用双斜杠\\,单斜杠我这里会出错,不过看别人的教程,有的是单斜杠。自己尝试吧
# 设置mysql数据库的数据的存放目录
datadir=D:\\mysql-8.0.11-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

8.0.36

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
[client]
# 设置mysql客户端默认字符集
default-character-set=utf8

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4

[mysqld]
# 忽略大小写
lower_case_table_names=1

# 设置mysql客户端连接服务端时默认使用的端口3306
port = 3306

# 设置mysql的安装目录
basedir = D:\\mysql-8.0.36-winx64

# 设置mysql数据库的数据的存放目录
datadir = D:\\mysql-8.0.36-winx64\\data

# 允许最大连接数
max_connections=200

# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=100

# 服务端使用的字符集默认为8比特编码的latin1字符集【mysql8.0】
character_set_server = utf8mb4

# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

# 默认使用“mysql_native_password”插件认证【mysql8.0】
# default_authentication_plugin=mysql_native_password??
authentication_policy=*

# 跳过安全检查,如果跳过,可能不能执行修改用户密码sql语句
#skip-grant-tables

#开启查询缓存
#explicit_defaults_for_timestamp=true

# 创建模式 NO_AUTO_CREATE_USER再MYSQL8.0中已经被移除,不能再8.0以上版本配置【mysql8.0】
# sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
# sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

5.7.20

要先建立data文件

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

[mysqld]
# 设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=D:/mysql-5.7.20-winx64
# 设置mysql数据库的数据的存放目录
datadir=D:/mysql-5.7.20-winx64/data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

5.5.62

要先建立data文件

1
2
3
4
5
6
7
8
9
10
11
12
13
[client]
port=3306
default-character-set=utf8
[mysqld]
port=3306
character_set_server=utf8
basedir=D:\mysql-5.5.62-winx64
#解压目录
datadir=D:\mysql-5.5.62-winx64\data
#解压目录下data目录
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[WinMySQLAdmin]
D:\mysql-5.5.62-winx64\bin\mysqld.exe

5.6.51

要先建立data文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=D:\mysql-5.6.51-winx64
# 设置mysql数据库的数据的存放目录
datadir=D:\mysql-5.6.51-winx64\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

my.ini文件

记得放入对应的根文件目录下

D:\mysql-8.0.11-winx64\my.ini 保存的时候记得是ANSI保存

安装

初始化快捷复制

1
mysqld -install
1
mysqld -remove
1
mysqld --initialize --console
1
net start mysql
1
net stop mysql
1
mysql -u root -p
1
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456'; 

跳过密码验证

1
mysqld --console --skip-grant-tables --shared-memory

5.5、5.6默认初始化不需要密码,直接按回车过,修改密码,修改后需要重新启动mysql

1
2
FLUSH PRIVILEGES;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456');
1
exit;

初始化

输入mysqld -install [别名]回车,会出现以下则安装成功

img

不然需要先卸载残余mysql

通过命令sc delete MySQL/mysqld -remove[别名]卸载 MySQL 服务

在MySQL安装目录的 bin 目录下执行命令:

mysqld --initialize --console

执行完成后,会打印 root 用户的初始默认密码,比如:

1
2
3
4
5
6
7
8
C:\Users\Administrator>cd C:\Program Files\MySQL\bin

C:\Program Files\MySQL\bin>mysqld --initialize --console
2018-04-28T15:57:17.087519Z 0 [System] [MY-013169] [Server] C:\Program Files\MySQL\bin\mysqld.exe (mysqld 8.0.11) initializing of server in progress as process 4984
2018-04-28T15:57:24.859249Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: rI5rvf5x5G,E
2018-04-28T15:57:27.106660Z 0 [System] [MY-013170] [Server] C:\Program Files\MySQL\bin\mysqld.exe (mysqld 8.0.11) initializing of server has completed

C:\Program Files\MySQL\bin>

启动mysql

net start mysql[别名]

net stop mysql

img

mysql -u root -p

多版本的情况下:mysql -P 3307 -u root -p,回车后会提示输入密码,去输入之前的随机密码

img

在MySQL中执行命令:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

修改密码,注意命令尾的;一定要有,这是mysql的语法

可视化工具

1.Navicat Premium NAVH-WK6A-DMVK-DKW3

2.sqlog

名称:any

证书秘钥:dd987f34-f358-4894-bd0f-21f3f04be9c1

[SQLyog的下载、安装、破解、配置(MySQL可视化工具安装) - 砰砰的猿 - 博客园 (cnblogs.com)

3.mysql-workbench

主页 | a.d的私有云盘 (aiheadn.cn)

环境变量

1.在用户变量中

新建
变量名MYSQL_HOME
变量值:C:\Program Files\MySQL\MySQL S h e l l \color{pink}{Shell }She**ll 8.0
在这里插入图片描述
2.在系统变量Path中

输入:%MYSQL_HOME%\bin
C:\Program Files\MySQL\MySQL S e r v e r \color{pink}{Server}Serv**er 8.0\bin —> MySQL下的bin文件的绝对路劲
在这里插入图片描述

脚本备份

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
@echo off

set MYSQL_HOME=D:\mysql-8.0.11-winx64
setx PATH "%PATH%;%MYSQL_HOME%\bin"

setx MYSQL_HOME "D:\mysql-8.0.11-winx64" /M
setx PATH "%PATH%;%MYSQL_HOME%\bin" /M

echo MySQL environment variable has been set.
set SrcFile=D:\mysql-8.0.11-winx64\bin\mysql.exe
set Args=-uroot -p
set LnkFile=%USERPROFILE%\Desktop\MySQL.lnk
set IconFile=D:\mysql-8.0.11-winx64\mysqlico.ico

call :CreateShort "%SrcFile%" "%Args%" "%LnkFile%" "%IconFile%"
goto :eof

:CreateShort
set SrcFile=%~1
set Args=%~2
set LnkFile=%~3
set IconFile=%~4

echo Set oWS = WScript.CreateObject("WScript.Shell")> CreateShort.vbs
echo sLinkFile = "%LnkFile%">> CreateShort.vbs
echo Set oLink = oWS.CreateShortcut(sLinkFile)>> CreateShort.vbs
echo oLink.TargetPath = "%SrcFile%">> CreateShort.vbs
echo oLink.Arguments = "%Args%">> CreateShort.vbs
echo oLink.IconLocation = "%IconFile%">> CreateShort.vbs
echo oLink.Save>> CreateShort.vbs
cscript //nologo CreateShort.vbs
del CreateShort.vbs

杀掉3306端口

关闭windows中被占用的端口
1.查找到端口的PID

netstat -aon|findstr "3306"

2、杀死进程操作:

taskkill /pid xxx -t -f

xxx代表该端口的进程ID,也就是上图中pid一栏

img

例如:上面3306端口对应的是5392

命令:taskkill /pid 5392 -t -f

跳过密码登录

首先进入服务页面,停止Mysql服务。
用管理员的身份打开cmd窗口,先cd到本地数据库bin的路径,由于我是8.0.20版本,
输入mysqld --console --skip-grant-tables --shared-memory
再打开一个新的cmd窗口,同样进入数据库bin的路径,
输入mysql -u root -p ,对mysql进行无密登录。

MYSQL设置远程访问

使用改表法

可能是我们的的帐号不允许从远程登陆,只能在localhost(127.0.0.1)登录。这个时候只要在localhost的那台电脑,登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称”%”,具体命令如下:

1
2
3
4
5
6
7
8
9
mysql -u root -pvmware

use mysql;

update user set host = '%' where user = 'root';

flush privileges;

select host, user from user;

疑难杂症 1045错误

先尝试重新安装数据库 或者修改密码

疑难杂症 2059错误

ALTER USER ‘root‘@’localhost’ IDENTIFIED BY ‘你的密码’ PASSWORD EXPIRE NEVER; #修改加密规则
ALTER USER ‘root‘@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘你的密码’; #修改密码规则

疑难杂症 10060 1130错误 root授权%

1.需要给root授权%

1
2
3
4
5
6
7
8
9
10
11
--  mysql -u root -p

-- show databases;

-- use mysql;

-- select host,user from user

-- grant all privileges on *.* to 'root'@'%' identified by '你的密码' with grant option;

-- FLUSH PRIVILEGES;

再进行重启任务

2、服务未启动; //CentOS服务器 # /etc/init.d/mysqld start

3、MySQL配置不容许远程访问,重启命令:/etc/init.d/mysqld restart

疑难杂症bin目录net stop mysql启动失败

解决方案是 设置系统环境变量 然后到管理员那个c盘 先看看能不能启动 ,可能是卸载残留导致的问题

疑难杂症 1072: 指定的服务已标记为删除。

快捷键 Ctrl + Alt + Delete,打开系统任务管理器,查找 mysqld.exe 进程,右键,然后结束任务。
再去刷新服务列表,此时MySQL服务已经没有了。

疑难杂症 服务没有响应控制功能

下载微软常用运行库合集,安装之后,重启电脑,就不会有这个提示了

官网下载

如图,选择自己电脑对应的版本进入官网进行下载。

1、下载地址:MySQL

(1)打开之后如下图:

img

(2)下滑一点,找到如图:

img

(3)点击进入

img

(4)点击进入

img

(5)选择好版本之后下载

img

Linux网络安装mysql

8.0

1. 第一步 下载

下载地址:https://dev.mysql.com/downloads/repo/yum/
········或········· http://repo.mysql.com
#使用wget下载mysql
wget http://repo.mysql.com/mysql80-community-release-el7.rpm

在这里插入图片描述

2. 第二步 安装
(1) 通过yum安装方法,会直接添加mysql环境变量和启动服务

yum -y install mysql80-community-release-el7.rpm

在这里插入图片描述

(2) 安装community-server

yum -y install mysql-community-server

3、第三步 启动服务并查看服务状态

1
2
3
systemctl start mysqld        #一定要启动服务!
systemctl status mysqld #查看服务状态
systemctl enable mysqld # 设置自启动

在这里插入图片描述

4、第四步 获取密码
登录 MySQL 必须要通过密码,此时 root 用户的密码可以通过以下命令在日志文件中获取:

grep "password" /var/log/mysqld.log

image-20231009160943643

5、第五步 登录并求改密码

(1)登录

mysql -u root -p

(2) 修改密码(修改规则)

在这里插入图片描述

1
2
3
4
5
6
7
8
9
10
MySQL 8.0+ 版本为以下方式:(密码修改)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Tianyu.1';

MySQL 8.0+ 版本为以下方式:(规则修改)
set global validate_password.policy=0;
set global validate_password.length=4;

MySQL 8.0+ 版本为以下方式:(密码修改)
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

6、第六步 授权

授权远程用户连接

1
2
3
4
5
6
7
8
# 改表法
# 选择数据库
use mysql;
# 最后授权 MySQL,允许远程用户登录访问 MySQL
update user set host = '%' where user = 'root';
# 刷新权限
flush privileges;

小知识:vim全选删除:esc+gg+dG

5.7

  • MySQL:5.7.34

    本示例中,MySQL相关安装路径说明如下:

    • 配置文件:/etc/my.cnf
    • 数据存储:/var/lib/mysql
    • 命令文件:/usr/bin和/usr/sbin
  • 数据库端口:3306

第一步 安装
1、首先检查当前服务器上是否已经安装有mysql:

rpm -qa|grep -i mysql*
2、卸载centos7自带的数据库,因为centOS自带一个老版本的mariadb-libs与当前mysql包的冲突,故需要先卸载,再安装。

yum remove mariadb-libs

3、运行以下命令更新YUM源。

rpm -Uvh https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

4、运行以下命令安装MySQL。

yum -y install mysql-community-server

公钥尚未安装使用

yum -y install mysql-community-server –nogpgcheck

5、输入已下命令查看是否安装成功

mysql -V

第二步 配置Mysql

1、运行以下命令启动MySQL服务。

systemctl start mysqld

2、运行以下命令设置MySQL服务开机自启动。

systemctl enable mysqld

systemctl status mysqld 查看服务状态

3、找到root用户的初始密码,需要使用如下命令

cat /var/log/mysqld.log|grep temp

4、使用密码和用户登录mysql

mysql -hlocalhost -uroot -p

5、登录之后,降低密码复杂度限制:

1
2
3
set global validate_password_policy=0;
set global validate_password_length=4;

6、登录之后, 修改root用户的初始密码;

alter user 'root'@'localhost' identified by '123456';

7、登录之后,授权远程连接

1
2
3
4
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' identified by '123456';
flush privileges;
systemctl disable firewalld.service,禁止防火墙服务器