查看“Mysql:安装(Windows)”的源代码
←
Mysql:安装(Windows)
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
[[category:MySQL]] [[category:安装(Windows)]] == 下载安装包 == 一般选择的是社区版(MySQL Community Server)的GA版本(正式发布版本、生产版本),链接 [https://dev.mysql.com/downloads/mysql/ MySQL:Download MySQL Community Server]。 : [[File:下载MySQL安装文件.jpg|600px]] 安装文件类型: # “mysql-xxx-win64.zip”:编译好的 windows 64 位 MySQL,文件解压缩后即可使用(需要手工配置)。 # “mysql-xxx-win64.msi”:windows 安装包,双击执行根据向导安装即可。 # “mysql-xxx.zip”:windows源文件,需要编译。 == 安装 MySQL== 以 mysql-5.7.33-winx64.zip 为例。 安装步骤: # 解压 MySQL 文件到目的目录;(如“D:\Program Files\mysql-5.7.33-winx64”) # 配置环境变量: #: <syntaxhighlight lang="bash" highlight=""> MYSQL_HOME:D:\Program Files\mysql-5.7.33-winx64; path 添加:%MYSQL_HOME%\bin; </syntaxhighlight> # 新建配置文件“'''my.ini'''”: #: <syntaxhighlight lang="yaml"> [mysql] # 设置 mysql 客户端默认字符集 default-character-set=utf8 [mysqld] # 设置 3306 端口 port = 3306 # 设置 mysql 的安装目录 basedir=D:\Program Files\mysql-5.7.23-winx64 # 设置 mysql 数据库的数据的存放目录 datadir=D:\Program Files\mysql-5.7.23-winx64\data # 允许最大连接数 max_connections=200 # 服务端使用的字符集默认为 8 比特编码的 latin1 字符集 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB </syntaxhighlight> #* 用于配置MySQL的基础设置,如字符集、引擎、端口、安装目录、数据目录等。 # 初始化数据库: #: <syntaxhighlight lang="xml"> # 初始化命令 mysqld --initialize-insecure --user=mysql </syntaxhighlight> #: MySQL目录中多出一个“data”文件夹,包含了系统的默认数据库; #* 如果使用“--initialize”还会生了一个随机的初始 root 密码。 # 安装服务: #: <syntaxhighlight lang="xml"> # 将服务器安装为 Windows 服务,并设置服务为“自动启动” mysqld -install [service_name] # 将服务器安装为 Windows 服务,并设置服务为“手动启动” mysqld --install-manual [service_name] </syntaxhighlight> #* 如果未提供“[service_name]”值,则默认服务名称为“MySQL”。 #* 第一次安装的话会显示“Service successfully installed.”;否则会显示“The service already exists! ...” #*: [[File:安装服务.jpg|600px]] # 验证安装: #: <syntaxhighlight lang="xml"> # 查看MySQL版本 mysql --version </syntaxhighlight> #: [[File:查看MySQL版本.png|600px]] === 关于“初始化数据库” === 安装 MySQL 之后,初始化数据库,包括 mysql 系统数据库中的表: <syntaxhighlight lang="bash" highlight=""> mysqld --initialize --user=mysql [--console] mysqld --initialize-insecure --user=mysql [--console] </syntaxhighlight> # “--user=mysql”:以“mysql”身份运行该命令。 # “--console”:选项将消息定向到 Windows 控制台;否则将写入其标准错误输出:“错误日志”(data目录中后缀为“.err”的文件)。 # “--initialize”:进行“默认安全”的初始化,即:包括'''生成随机的初始root密码'''(可在错误日志中找到)。 #* 以 root 连接到服务器时,“'''<syntaxhighlight lang="xml" inline>mysql -u root -p</syntaxhighlight>'''”需要生成的临时密码; #* 在这种情况下,密码被标记为'''已过期''',您将需要选择一个新密码; # “--initialize-insecure”:执行初始化,但'''不会生成root密码'''。 #* 以 root 连接到服务器时,不使用密码登录“'''<syntaxhighlight lang="xml" inline>mysql -u root --skip-password</syntaxhighlight>'''”; #* 这是不安全的;假定您在将服务器投入生产使用之前会及时为帐户分配密码; <pre> 对于某些 MySQL 安装方法,数据目录初始化是自动的。(如在 Windows 上通过msi文件的自动化安装过程) 对于其他安装方法,必须手动初始化数据目录。(包括在 Unix 和类似 Unix 的系统上从通用二进制发行版和源代码发行版进行安装,以及在 Windows 上从 ZIP Archive 软件包进行安装) </pre> 初始化期间的服务器操作:'''服务器检查数据目录是否存在''': # 如果不存在数据目录,则服务器将创建它。 # 如果数据目录存在但不为空(即它包含文件或子目录),则服务器在生成错误消息后退出: #: <syntaxhighlight lang="xml"> [ERROR] --initialize specified but the data directory exists. Aborting. </syntaxhighlight> #* 在这种情况下,请删除或重命名数据目录,然后重试。 * 首次安装 MySQL 之后才需要进行数据目录初始化;但,初始化数据目录的命令不会覆盖任何现有的 mysql 数据库表,因此在任何情况下都可以安全运行。 == 多版本安装 == 多版本共存时: 1、需要配置不同的环境变量。 2、配置文件中:需要指定不同端口“port”避免冲突; 3、安装时,安装命令需要指定配置文件。 步骤:(以 5.7.35、8.0.27 为例) # 解压 MySQL 文件到目的目录; # 新建配置文件: #: 分别在两个 MySQL 目录中新建“my.ini”: #: <syntaxhighlight lang="xml" highlight=""> [mysqld] # 设置端口 port=3306 # 设置 mysql 的安装目录 basedir=D:\Program Files\MySQL\mysql-5.7.35 # 设置 mysql 数据库的数据的存放目录 datadir=D:\Program Files\MySQL\mysql-5.7.35\data # 允许最大连接数 max_connections=200 # 服务端使用的字符集默认为 8 比特编码的 latin1 字符集 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB [mysql] # 设置 mysql 客户端默认字符集 default-character-set=utf8 [client] # 设置mysql客户端连接服务端时默认使用的端口 port=3306 default-character-set=utf8 </syntaxhighlight> #: <syntaxhighlight lang="xml" highlight=""> [mysqld] # 设置端口 port=3307 # 设置mysql的安装目录 basedir=D:\Program Files\MySQL\mysql-8.0.27 # 设置mysql数据库的数据的存放目录 datadir=D:\Program Files\MySQL\mysql-8.0.27\data # 允许最大连接数 max_connections=200 # 允许连接失败的次数 max_connect_errors=10 # 服务端使用的字符集默认为UTF8 character-set-server=utf8mb4 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB # 认证插件:默认使用“caching_sha2_password”,可选“mysql_native_password” default_authentication_plugin=caching_sha2_password [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8mb4 [client] # 设置mysql客户端连接服务端时默认使用的端口 port=3307 default-character-set=utf8mb4 </syntaxhighlight> #* 需要设置不同的端口! #* MYSQL 8+ 字符编码要求使用“utf8mb4”,否则在初始化的时候会报一个警告; #* MYSQL 8+ 默认的认证插件为“caching_sha2_password”;MYSQL 5.7 默认使用“mysql_native_password”; #* “server-id”用于不同服务器的主从复制,这里不需要; # 初始化数据库: #: <syntaxhighlight lang="bash" highlight=""> cd D:\Program Files\MySQL\mysql-5.7.35\bin mysqld --initialize --user=mysql --console cd D:\Program Files\MySQL\mysql-8.0.27\bin mysqld --initialize --user=mysql --console </syntaxhighlight> #* 完成之后,可以通过“mysqld --version”确认是否成功; #* 安装第二个时,可能遇到错误:<big>'''<code>[ERROR]—initialize specified but the data directory has files in it . Aborting .</code>'''</big> #*: [[File:MySQL安装多版本错误:--initialize specified but the data directory has files int it.png|600px]] #*: 原因:由于已为第一个 MySQL 配置了环境变量,所以虽然定位到了第二个 bin 目录,但使用的还是第一个 bin(环境变量中先读取的那个) ——【这他妈是 Windows 的 bug 吧】 #*: 解决:<big>'''先删除环境变量,待初始化、安装服务之后,再配置环境变量。'''</big> ——【由于使用的不是定位的目录,还可能引起许多问题——由于不同版本 MySQL 引起的问题】 # 安装服务: #: <syntaxhighlight lang="bash" highlight=""> cd D:\Program Files\MySQL\mysql-5.7.35\bin mysqld –install MySQL57 cd D:\Program Files\MySQL\mysql-8.0.27\bin mysqld –install MySQL80 </syntaxhighlight> #* 需要设置不同的服务名称! # 配置环境变量: #: <syntaxhighlight lang="bash" highlight=""> MYSQL_HOME57:D:\Program Files\MySQL\mysql-5.7.35 MYSQL_HOME80:D:\Program Files\MySQL\mysql-8.0.27 path 添加:%MYSQL_HOME57%\bin;%MYSQL_HOME80%\bin; </syntaxhighlight> # '''修改注册表''':【!!!】 #: 注册表“计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\”下找到安装的服务,将“'''ImagePath'''”设置为正确的路径,如: #: <syntaxhighlight lang="bash" highlight=""> 计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL57 ImagePath:"D:\Program Files\MySQL\mysql-5.7.35\bin\mysqld" MySQL57 计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL57 ImagePath:"D:\Program Files\MySQL\mysql-8.0.27\bin\mysqld" MySQL80 </syntaxhighlight> #* 因为安装了两个版本的 MySQL,所以后一个的执行文件被指向了前一个版本目录中的内容,需要修改!!! # '''开放端口''':【!!!】 #: 在防火墙的“高级设置”中添加“'''入站规则'''”,指定需要的端口。 #* 规则可能没生效,可能需要重启。【坑】 ::: [[File:MySQL多版本安装.png|800px]] === 指定“--defaults-file” === 如果安装过程中要指定“--defaults-file”,则必须在前面: : <syntaxhighlight lang="bash" highlight=""> 应该是: mysqld --defaults-file="D:\Program Files\MySQL\mysql-5.7.35\my.ini" --initialize --user=mysql --console 而非: mysqld --initialize --user=mysql --console --defaults-file="D:\Program Files\MySQL\mysql-5.7.35\my.ini" </syntaxhighlight> 示例: : <syntaxhighlight lang="bash" highlight=""> cd D:\Program Files\MySQL\mysql-5.7.35\bin mysqld --defaults-file="D:\Program Files\MySQL\mysql-5.7.35\my.ini" --initialize --user=mysql --console mysqld –install MySQL57 --defaults-file="D:\Program Files\MySQL\mysql-5.7.35\my.ini" cd D:\Program Files\MySQL\mysql-8.0.27\bin mysqld --defaults-file="D:\Program Files\MySQL\mysql-8.0.27\my.ini" --initialize --user=mysql --console mysqld –install MySQL80 --defaults-file="D:\Program Files\MySQL\mysql-8.0.27\my.ini" </syntaxhighlight> === 验证安装 === 如果服务均能启动,则说明安装成功。 如果有服务不能启动:(以下两个作用一样) # 在注册表“计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\”下找到安装的服务,在“ImagePath”可以确认是不是正确; # 在服务页面找到安装的服务项,右键页面可以看到服务的安装信息是否正确; === “本地计算机上的 MySQLXX 服务启动后停止。某些服务在未由其他程序或服务使用时将自动停止” === 如上安装了两个MySQL版本之后,发现始终只能启动一个。 : 一开始以为是因为服务的执行文件指向的是同一个目录下的内容,通过注册表项进行了更改,但是问题依旧; : 然后发现,其实是只能使用“3306”一个接口,无论哪个版本设置3306都可以启动,但是其他接口就不行,所以在防火墙打开了 3306-3309 的接口,但是问题依旧。 【解决】:坑比的系统防火墙规则没生效,重启了一遍才生效,一切正常了。 所以步骤是: # 修改注册表; # 开放端口; # 判断端口是否生效,否则重启试试。 == 卸载MySQL == # 移除 MySQL 服务: #: <syntaxhighlight lang="bash" highlight=""> mysqld -remove </syntaxhighlight> # 删除环境变量; # 删除 MySQL 目录; #* 此外,在“C:\ProgramData”、“C:\Program Files (x86)”、“C:\Program Files”等位置可能还有 MySQL 的文件夹; == 进入 MySQL == # 启动服务:使用Windows的cmd执行命令,用于手动启动服务: #: <syntaxhighlight lang="xml"> net start mysql </syntaxhighlight> # 登录: #: <syntaxhighlight lang="xml"> mysql -u root -p </syntaxhighlight> # 设置密码: #: <syntaxhighlight lang="xml"> use mysql; ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; </syntaxhighlight> #: <!-- msi本机安装时修改密码为“@eijux” --> # 操作数据库:如查看存在的数据库等: #: <syntaxhighlight lang="xml"> show databases; </syntaxhighlight> # 退出和停止: #: <syntaxhighlight lang="xml"> quit // 退出 net stop mysql // 停止服务 </syntaxhighlight> == 附:安装 MySQL(mysql-installer-community-5.7.33.0.msi)== 使用Windows Installer安装MySQL顺序而行,没有特别需要注意的地方: <gallery> File:WindowsInstaller安装MySQL_1.jpg|“License Agreement(用户许可证协议)” File:WindowsInstaller安装MySQL_2.jpg|“Choosing a Setup Type(安装类型选择)” File:WindowsInstaller安装MySQL_3.jpg|根据所选择的安装类型安装 Windows 系统框架(framework) File:WindowsInstaller安装MySQL_4.jpg|弹出安装程序窗口,安装需要的系统框架 File:WindowsInstaller安装MySQL_5.jpg|框架已经安装完成 File:WindowsInstaller安装MySQL_6.jpg|所需框架均安装成功后,单击 “Next(下一步)” File:WindowsInstaller安装MySQL_7.jpg|安装确认窗口,单击 “Execute(执行)”按钮,开始 MySQL 各个组件的安装 </gallery>
返回至“
Mysql:安装(Windows)
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
笔记
服务器
数据库
后端
前端
工具
《To do list》
日常
阅读
电影
摄影
其他
Software
Windows
WIKIOE
所有分类
所有页面
侧边栏
站点日志
工具
链入页面
相关更改
特殊页面
页面信息