安装最新mysql 8.0.22在windows10
在windows10下安装最新mysql 8.0.22
若重装 mysql可以看简捷版https://blog.csdn.net/ahmcwt/article/details/109859805
一.准备工作:
首先MySQL 8.0 Server需要Microsoft Visual C ++ 2015可再发行组件包才能在Windows平台上运行。用户应在安装服务器之前确保已将软件包安装在系统上。该软件包可从 Microsoft下载中心获得。此外,MySQL调试二进制文件要求安装Visual Studio 2015。点击下载Microsoft Visual C ++ 2015可再发行组件包
MySQL仅适用于Microsoft Windows 64位操作系统。有关支持的Windows平台的信息,请参见 https://www.mysql.com/support/supportedplatforms/database.html。
1.去mysql官网https://dev.mysql.com/downloads/mysql/
下载mysql 8.0.22社区版压缩包https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.22-winx64.zip
点击,然后
点击开始下载,晚上下载速度还行,如果迅雷下载可能会快一些.
下载后,不放心的话,可以验证md5的值是否相同.参考https://dev.mysql.com/doc/refman/8.0/en/verifying-md5-checksum.html关于md5的介绍.
方法:1.到网站http://www.fourmilab.ch/md5/,下载md5工具文件点击下载md5.zip
2.解压缩md5,
并把其中的md5.exe拷贝到与下载的mysql8.0.22压缩文件在同一个目录下.(d5系统默认没显示扩展名.exe,但后面类型有显示有"应用程序").
(便捷进入cmd方式:在md5与mysql-8.0.22文件夹所在地址栏里直接输入cmd然后回车,即可进入cmd窗口.
输入dir命令,显示文件名字,便于后面md5验证时用到.
鼠标拖选mysql-8.0.22-winx64.zip,然后ctrl+c复制,
在cmd命令行窗口中,输入md5 空格 然后ctrl+粘贴文件名(省去一个字一个字地输入,也避免了输错),回车,进行校验.
md5.exe mysql-8.0.22-winx64.zip
A78E5DA2BB87B51B6DF06690977BE199 mysql-8.0.22-winx64.zip
对比验证所产生的校验和(十六进制数字的字符串)与相应软件包正下方的下载页面上显示的校验和相符。
2.解压:
解压缩后,有两层文件夹mysql-8.0.22-winx64,把最里面的那个mysql-8.0.22-winx64剪切,粘贴到c盘或d盘的根目录下.并将其文件夹名mysql-8.0.22-winx64改为mysql
(注意:解压后里面共有5个文件夹,2个文件.没有后期出现的data文件夹,data在初始化之后才会出现,如果在初始化时,存在data文件夹,则容易出错,所以需删去data).
二.安装mysql
windows下有两种安装方式,一种是.msi文件自动安装;另一种是解压缩下载的文件,手动安装.这里采用的是手动方式的.
参考:https://dev.mysql.com/doc/refman/8.0/en/windows-install-archive.html
(一)如果是由低版本升级到高版本mysql:
参考:https://dev.mysql.com/doc/refman/8.0/en/windows-upgrading.html
1.从https://dev.mysql.com/downloads/下载MySQL的最新Windows ZIP存档发行版。
2.如果mysql服务正在运行,停止它.
1)如果是作为服务安装了,用:
sc stop mysqld_service_name
或者 net stop mysqld_service__name
2)如果没用将mysql服务器作为服务运行,用mysqladmin将其停止.例:
D:\> mysql\bin>"\bin\mysqladmin" -u root -p shutdown
3.解压缩zip文件,建议覆盖现有的mysql安装(如C:\mysql),也可以将其安装到其他目录中,例如:D:\mysql8.
4.重新启动服务器。例如,如果将mysql作为服务运行,则使用:
SC START mysqld_service_name
或 NET START mysqld_service_name
否则直接调用 mysqld.
5.mysql8.0.16之前,以管理员身份运行mysql_upgrade来检查sql表,如有必要,并尝试修复、更新。8.0.16及以后的版本则不需这一步。
使用mysql_upgrade的方法:1).确保服务器正在运行.2).命令行执行mysql_upgrade [options] 3).停止服务器并且重新启动,以便任何系统表更改长效.
默认情况下,mysql_upgrade以MySQLroot
用户身份运行 。如果在root
运行mysql_upgrade时密码已过期 ,则会显示一条消息,提示您密码已过期,并且 mysql_upgrade失败。要更正此问题,请重置root
密码以使其失效,然后再次运行mysql_upgrade。首先,以以下方式连接到服务器root
:
shell> mysql -u root -p
Enter password: **** <- enter root password here
使用ALTER USER
以下命令重置密码:
mysql> ALTER USER USER() IDENTIFIED BY 'root-password';
然后退出mysql并再次运行 mysql_upgrade:
shell> mysql_upgrade [options]
shell> mysql_upgrade [options]
(二)如果不是升级安装:
(本文要介绍的安装方法)
1.创建配置文件my.ini
在前面准备工作做好下载并解压之后,(确保以具有管理员权限的用户身份登录windows).在mysql目录下,双indows10按下图设置勾选显示"文件扩展名",右键创建文本文件,保存命名为my.ini
my.ini文件内容如下:
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=D:/MySQL
# 设置mysql数据库的数据的存放目录
datadir=D:/MySQL/Datasocket=/tmp/mysql.sock
key_buffer_size=16M
max_allowed_packet=128M
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使用的字符集默认为utf8mb4,5.5.3之后可以支持utf8mb4
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证以兼容之前版本连接,5.6以后已启用 ''sha256_password'插件,但其在以后版本里可能会弃用. 其提示建议:Please use caching_sha2_password instead'
#mysql_native_password
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集,
# default-character-set=utf8mb4 实践没发现此句有什么用,反而在运行\mysql\bin>mysql_secure_installation时会出现错误提示mysql_secure_installation: [ERROR] unknown variable 'default-character-set=utf8mb4'.,用#注释掉就好了.
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
Microsoft Windows路径名在选项文件中使用(正斜杠)而不是反斜杠指定。如果确实使用反斜杠,则将它们加倍:
在选项文件中,变量设置不带前导破折号:
[mysql] max_allowed_packet=16M
命令行带mysql --max_allowed_packet=16M
如果愿意,可以将变量名称中的下划线指定为破折号。以下选项组是等效的。两者都将服务器密钥缓冲区的大小设置为512MB:
[mysqld] key_buffer_size=512M[mysqld] key-buffer-size=512M
[mysqld]
# set basedir to your installation path
basedir=D:\\mysql
# set datadir to the location of your data directory
datadir=D:\\mydata\\data
管方网站上有这个说法,现在实际在用的时候,感觉好像都行。建议用斜杠/
这都是正确的,,官方建议值用引号括起来.
注意保存时,编码格式选择ANSI,而不是默认的UTF-8
2.数据目录初始化
在前面安装了Visual C ++ 2015可再发行组件包,下载解压mysql压缩包并改名,以及建立配置文件my.ini之后,要进行数据目录初始化操作.
这里,首先要以本机windows管理员的身份进入cmd终端窗口:
找到d盘mysql文件夹,双击打开:
点击"文件"--"打开Windows PowerShel(R)"--"以管理员身份打开Windows PowerShell(A)"
另一进入cmd命令窗口方法是:win+s,如下图,鼠标右击"",选择"以管理员身份运行".(如果win+s之后,没有看到
,则手动输入cmd三个字母之后就会出现.用过了下次也会出现)
运行初始化命令:
先删除data文件夹;
mysqld --initialize --console //带密码初始化.
用-I替代--initialize效果一样:mysqld --defaults-file=d:\mysql\my.ini -I --console
(在mysql下自动建立data文件夹并复制一堆文件进去;密码最好拍照记录,防遗.)
也可以不带密码进行初始化:
mysqld --defaults-file=d:\mysql\my.ini --initialize-insecure --console
3.第一次启动mysql服务:
3.1开一cmd窗口(管理员):测试:启动mysq服务:mysqld --console
如果省略该--console
选项,则服务器将诊断输出写入数据目录中的错误日志(d:\MySQL\data
默认情况下)。错误日志是带有.err
扩展名的文件,可以使用该--log-error
选项进行设置。
3.2开另一cmd窗口(管理员):客户端连接mysql服务:mysql -uroot -p (-u root与-uroot等效,root为用户名)
(如果用于--initialize-insecure
初始化数据目录,使用 root
不带密码的方式连接到服务器 ,可以用:mysql -u root --skip-password)
3.3修改密码: ALTER USER 'root'@'localhost' IDENTIFIED BY 'root-password';
登录连接mysqld服务器之后,使用ALTER USER
语句分配新 root
密码,否则在客户端运行命令都会提示:ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
注:可以在客户端窗口用cmd命令行方式:mysqladmin -u root shutdown -p 停止 服务窗口对应的mysqld服务。
D:\mysql\bin>mysqladmin -u root shutdown -p
Enter password: *****此命令调用MySQL管理实用程序 mysqladmin连接到服务器并告诉它关闭。该命令以MySQLroot用户身份连接,该 用户是MySQL授权系统中的默认管理帐户。注意
MySQL授权系统中的用户完全独立于Microsoft Windows下的任何操作系统用户。
改完密码,还不能算完,还有一步:
4.把mysql注册到windows的后台服务,并启动mysql服务:
mysqld --install mysql --defaults-file=d:\mysql\my.ini
--defaults-file=
file_name
只读给定的选项文件。如果文件不存在或无法访问,则发生错误。 file_name
如果给出为相对路径名而不是完整路径名,则相对于当前目录解释。
例外:即使这样--defaults-file
, mysqld也会 读取 mysqld-auto.cnf
。
如果使用了命令行,则它必须是命令行上的第一个选项,但如果服务器是使用 --defaults-file
and --install
(或 --install-manual
)选项启动的,则--install
(or --install-manual
)必须是第一个选项 。
此步可能存在的问题:
在Windows上,如果服务器使用--defaults-file
和 --install
选项 启动,则 --install
必须先启动(排在前面)。
ok
拓展:
关于选项文件my.ini
选项文件处理顺序
Default options are read from the following files in the given order:
C:\Windows\my.ini C:\Windows\my.cnf C:\my.ini C:\my.cnf D:\mysql\my.ini D:\mysql\my.cnfMySQL按照以下讨论中描述的顺序查找选项文件,并读取所有存在的文件。如果您要使用的选项文件不存在,请使用刚刚讨论的适当方法来创建它。
注意有关与NDB Cluster程序一起使用的选项文件的信息,请参见 NDB Cluster的配置”。
在Windows上,MySQL程序以指定的顺序从下表中显示的文件中读取启动选项(首先读取的文件优先,随后读取的文件优先)。
表4.1在Windows系统上读取的选项文件
文件名 目的 ,
%WINDIR%
\my.ini
%WINDIR%
\my.cnf全局选项 C:\my.ini
,C:\my.cnf
全局选项 ,
BASEDIR
\my.ini
BASEDIR
\my.cnf全局选项 defaults-extra-file
用指定的文件 --defaults-extra-file
(如果有)
%APPDATA%
\MySQL\.mylogin.cnf登录路径选项(仅客户端)
DATADIR
\mysqld-auto.cnf系统变量使用 SET PERSIST
或SET PERSIST_ONLY
保留(仅服务器)在上表中,
%WINDIR%
代表Windows目录的位置。这很普遍C:\WINDOWS
。使用以下命令从WINDIR
环境变量的值确定其确切位置 :C:\> echo %WINDIR%
%APPDATA%
表示Windows应用程序数据目录的值。使用以下命令从APPDATA
环境变量的值确定其确切位置 :C:\> echo %APPDATA%
BASEDIR
表示MySQL基本安装目录。使用MySQL Installer安装MySQL 8.0后,通常 在该位置 代表程序目录(通常在Windows的英语版本中),请参见 “用于Windows的MySQL Installer”。C:\
PROGRAMDIR
\MySQL\MySQL 8.0 ServerPROGRAMDIR
Program Files
DATADIR
表示MySQL数据目录。用于查找mysqld-auto.cnf
,其默认值是MySQL编译时内置的数据目录位置,但可以通过--datadir
指定为在处理之前mysqld-auto.cnf
处理的选项文件或命令行选项来更改。本文所述mysql安装在d:\mysql,目录结构如下图:
选项文件my.ini的语法 :
在选项文件中指定选项的语法类似于命令行语法(请参见 “在命令行上使用选项”)。但是,在选项文件中,您省略了选项名称中的前两个破折号,并且每行仅指定了一个选项。例如,
--quick
与--host=localhost
在命令行上应被指定为quick
与host=localhost
上在选项文件单独的行。要 在选项文件中指定表单 的选项,请将其写为 。--loose-
opt_name
loose-
opt_name
选项文件中的空行将被忽略。非空行可以采用以下任何形式:
#
,comment
;
comment
注释行以
#
或 开头;
。一个#
注释也可以从行的中部开始。
[
group
]
group
是要为其设置选项的程序或组的名称。在组行之后,所有选项设置行都将应用于命名组,直到给出选项文件或另一组行的末尾。选项组名称不区分大小写。
opt_name
这等效 于在命令行上。
--
opt_name
opt_name
=value
这等效 于在命令行上。在选项文件中,字符周围可以有空格,这在命令行上是不正确的。该值可以选择用单引号或双引号引起来,如果该值包含注释字符,则很有用。
--
opt_name
=value
=
#
前导和尾随空格会自动从选项名称和值中删除。
您可以使用转义序列
\b
,\t
,\n
,\r
,\\
,并\s
在选项值来表示退格,制表符,换行符,回车,回车,和空格字符。在选项文件中,适用以下转义规则:
反斜杠后跟有效的转义序列字符,将转换为该序列表示的字符。例如,
\s
转换为空格。后面没有有效转义序列字符的反斜杠保持不变。例如,
\S
按原样保留。前面的规则意味着字面反斜杠可以指定为
\\
,或者\
好像后面没有有效的转义序列字符。选项文件中转义序列的规则与SQL语句中字符串文字中转义序列的规则略有不同。在后一种情况下,如果 “
x
”不是有效的转义序列字符,则 变为 “ ”而不是 。请参见 第9.1.1节“字符串文字”。\
x
x
\
x
选项文件值的转义规则与Windows路径名特别相关,Windows路径名
\
用作路径名分隔符。Windows路径名称中的分隔符必须像\\
在其后跟转义序列字符一样编写。可以写为\\
或\
不写。或者,/
可以在Windows路径名中使用,并视为\
。假设您要C:\Program Files\MySQL\MySQL Server 8.0
在选项文件中指定的基本目录 。这可以通过几种方法完成。一些例子:basedir="C:\Program Files\MySQL\MySQL Server 8.0" basedir="C:\\Program Files\\MySQL\\MySQL Server 8.0" basedir="C:/Program Files/MySQL/MySQL Server 8.0" basedir=C:\\Program\sFiles\\MySQL\\MySQL\sServer\s8.0
如果选项组名称与程序名称相同,则该组中的选项专门适用于该程序。例如,
[mysqld]
和[mysql]
组分别适用于mysqld服务器和 mysql客户端程序。该
[client]
选项组是由MySQL分发提供(但所有的客户端程序读取 未通过的mysqld)。要了解使用C API的第三方客户端程序如何使用选项文件,请参见mysql_options()上的C API文档 。该
[client]
组使您可以指定适用于所有客户端的选项。例如,[client]
是用于指定用于连接服务器的密码的适当组。(但是请确保该选项文件只能由您自己访问,以便其他人无法找到您的密码。)请确保不要在该[client]
组中放置一个选项,除非您使用的所有客户端程序都可以识别该选项。如果尝试运行不了解该选项的程序,则在显示错误消息后退出。首先列出更多常规选项组,然后列出更多特定组。例如,一个
[client]
组更为通用,因为它被所有客户端程序读取,而一个[mysqldump]
组仅由mysqldump读取 。稍后指定的选项将覆盖先前指定的选项,因此将选项组置于order中[client]
,[mysqldump]
可使 mysqldump特定的选项覆盖[client]
选项。这是一个典型的全局选项文件:
[client] port=3306 socket=/tmp/mysql.sock[mysqld] port=3306 socket=/tmp/mysql.sock key_buffer_size=16M max_allowed_packet=128M[mysqldump] quick
这是一个典型的用户选项文件:
[client] # The following password is sent to all standard MySQL clients password="my password"[mysql] no-auto-rehash connect_timeout=2
要创建选项组以仅由特定MySQL版本系列的mysqld服务器读取 ,请使用名称为
[mysqld-5.7]
,[mysqld-8.0]
等的组。以下组指示该sql_mode
设置仅应由具有8.0.x版本号的MySQL服务器使用:[mysqld-8.0] sql_mode=TRADITIONAL
选项文件包含
可以
!include
在选项文件中使用指令来包括其他选项文件,并!includedir
在特定目录中搜索选项文件。例如,要包含/home/mydir/myopt.cnf
文件,请使用以下指令:!include /home/mydir/myopt.cnf
要搜索
/home/mydir
目录并读取在此找到的选项文件,请使用以下指令:!includedir /home/mydir
MySQL不保证目录中选项文件的读取顺序。
注意
!includedir
在Unix操作系统上 使用伪指令查找和包含的任何文件 都必须具有以结尾的文件名.cnf
。在Windows上,此伪指令检查带有.ini
或.cnf
扩展名的文件。像其他选项文件一样,编写包含的选项文件的内容。也就是说,它应包含选项组,每个选项组前面都有 一行,指示选项所适用的程序。
[
group
]在处理包含文件时,仅使用当前程序正在寻找的组中的那些选项。其他组将被忽略。假设
my.cnf
文件包含以下行:!include /home/mydir/myopt.cnf
并假设
/home/mydir/myopt.cnf
如下所示:[mysqladmin] force[mysqld] key_buffer_size=16M
如果
my.cnf
由mysqld处理 ,则仅使用[mysqld]
in/home/mydir/myopt.cnf
。如果该文件由mysqladmin处理,则仅使用该[mysqladmin]
组。如果文件由任何其他程序处理,则不/home/mydir/myopt.cnf
使用in选项 。
!includedir
除读取命名目录中的所有选项文件外, 该指令的处理方式相似。如果选项文件包含
!include
或!includedir
指令,则在处理选项文件时,无论这些指令在文件中的位置如何,都将处理由这些指令命名的文件。为了使包含指令起作用,不应在引号内指定文件路径,并且文件路径不应包含转义序列。例如,提供的以下语句
my.ini
读取选项文件myopts.ini
:!include C:/ProgramData/MySQL/MySQL Server/myopts.ini !include C:\ProgramData\MySQL\MySQL Server\myopts.ini !include C:\\ProgramData\\MySQL\\MySQL Server\\myopts.ini
在Windows上,如果是文件的最后一行,请确保在末尾添加换行符。否则,将忽略该行。
!include
/path/to/extra.ini
程序选项修饰符
一些选项是“ boolean ”,并控制可以打开或关闭的行为。例如, mysql客户端支持一个
--column-names
选项,该 选项确定是否在查询结果的开头显示一列列名。默认情况下,启用此选项。但是,在某些情况下,例如在将mysql的输出发送到另一个仅希望看到数据而不是初始标题行的程序中时,您可能希望禁用它。要禁用列名,可以使用以下任何一种形式指定选项:
--disable-column-names --skip-column-names --column-names=0
在
--disable
与--skip
前缀和=0
后缀都具有相同的作用:他们关闭该选项。该选项的“启用”形式可以通过以下任何一种方式指定:
--column-names --enable-column-names --column-names=1
值
ON
,TRUE
,OFF
,和FALSE
也被识别为布尔选项(不区分大小写)。如果选项以开头
--loose
,则程序无法识别该选项,则不会退出并显示错误消息,而是仅发出警告:shell> mysql --loose-no-such-option mysql: WARNING: unknown option '--loose-no-such-option'
--loose
当您在同一台计算机上运行多个MySQL安装版本的程序并在选项文件中列出选项时, 该前缀很有用。可以使用--loose
前缀(或loose
在选项文件中)给出程序的所有版本可能无法识别的选项。识别该选项的程序版本会正常处理它,而无法识别该选项的版本会发出警告并忽略它。该
--maximum
前缀仅适用于 mysqld,并允许限制大型客户端程序可以设置会话系统变量的数量。为此,请使用--maximum
带变量名的前缀。例如,--maximum-max_heap_table_size=32M
防止任何客户端使堆表大小限制大于32M。该
--maximum
前缀旨在与具有会话值的系统变量一起使用。如果将其应用于仅具有全局值的系统变量,则会发生错误。例如,使用--maximum-back_log=200
,服务器会产生以下错误:Maximum value of 'back_log' cannot be set
关于初始化:
--initialize
,选项用于通过创建数据目录并填充mysql
系统模式中的表来初始化MySQL安装.(This option is used to initialize a MySQL installation by creating the data directory and populating the tables in themysql
system schema. )
-I
is a synonym for--initialize
.言下之意可以用-I替代--initialize,注意必须是大写i,如果是小写i的话,不能完成,并且有错误提示[Server] Can't create test file d:\MySQL\Data\mysqld_tmp_file_case_insensitive_test.lower-test等.
mysqld --initialize --user=mysql
mysqld --initialize-insecure --user=mysql
使用
--initialize
了 “默认安全”安装(即包括生成随机初始的root
密码)。在这种情况下,密码被标记为已过期,您必须选择一个新密码。使用
--initialize-insecure
,不会root
生成密码。这是不安全的;假定您打算在将服务器投入生产使用之前及时为帐户分配密码。mysqld --initialize --console
mysqld --initialize-insecure --console
--console
(仅Windows。)使默认错误日志目标为控制台。--console
--log-error
如果两者都给出,则优先 。mysqld --defaults-file=d:\mysql\my.ini --initialize --console //指定选项文件my.ini
mysqld --defaults-file=d:\mysql\my.ini -I --console //用-I替代--initialize效果一样.
但
--initialize-insecure中就不能用-I替代--initialize了.否则会不识别--insecure,提示:unknown option '--insecure'.
mysqld --defaults-file=d:\mysql\my.ini
--initialize-insecure
--console数据目录初始化期间的服务器操作
注意服务器执行的数据目录初始化序列不能代替mysql_secure_installation和 mysql_ssl_rsa_setup执行的动作 。请参见 “ mysql_secure_installation-提高MySQL安装安全性”和 “ mysql_ssl_rsa_setup-创建SSL / RSA文件”。
当用
--initialize
or--initialize-insecure
选项调用时 , mysqld在数据目录初始化序列期间执行以下动作:
服务器检查数据目录是否存在,如下所示:
如果不存在数据目录,则服务器将创建它。
如果数据目录存在但不为空(即它包含文件或子目录),则服务器将在生成错误消息后退出:
[ERROR] --initialize specified but the data directory exists. Aborting.
在这种情况下,请删除或重命名数据目录,然后重试。
如果每个条目的名称都以句点(
.
)开头,则允许现有数据目录为非空。- 服务器在数据目录中创建
mysql
系统架构及其表,包括数据字典表,授权表,时区表和服务器端帮助表。请参见 “ mysql系统模式”。- 服务器创建一个
'root'@'localhost'
超级用户帐户和其他保留帐户(请参见 “保留帐户”)。一些保留的帐户已锁定,不能被客户端使用,但'root'@'localhost'
仅供管理使用,您应为其分配密码。关于服务器启动:
如果mysqld没有启动,请检查错误日志以查看服务器是否在其中写入了任何消息以指示问题的原因。默认情况下,错误日志位于mysql
\data
目录中。该文件的后缀为.err
,也可以通过传入--log-error
选项来指定。或者,您可以尝试使用该--console
选项启动服务器 。在这种情况下,服务器可能会在屏幕上显示一些有用的信息以帮助解决问题。在Windows上,如果同时指定--console
了--log-error
两者,则优先。在这种情况下,默认错误日志目标是控制台而不是文件。
命令行格式mysqld --log-error[=file_name]关于mysqld服务启动可执行的一些选项,可以用mysqld --verbose --help查看 .
关于用户连接:
客户有两个选择。可以使用TCP / IP,或者如果服务器支持命名管道连接,则可以使用命名管道。
如果在
shared_memory
启用了系统变量的情况下启动服务器,则Windows版MySQL也支持共享内存连接 。客户端可以使用该--protocol=MEMORY
选项通过共享内存进行连接 。MySQL在所有Windows平台上都支持TCP / IP。如果您在
named_pipe
启用系统变量的情况下启动服务器,则Windows上的MySQL服务器也支持命名管道。必须明确启用此变量,因为使用命名管道时,某些用户在关闭MySQL服务器时会遇到问题。缺省情况下,无论平台如何,都使用TCP / IP,因为在许多Windows配置中,命名管道都比TCP / IP慢。关于建立连接的命令选项: //Connection-Establishment Option Summary 连接建立选项摘要
Option Name Description --default-auth Authentication plugin to use //身份验证插件使用 --host Host on which MySQL server is located //MySQL服务器所在的主机 --password Password to use when connecting to server //连接服务器时使用的密码 --pipe Connect to server using named pipe (Windows only) //使用命名管道连接到服务器(仅Windows) --plugin-dir Directory where plugins are installed //安装插件的目录 --port TCP/IP port number for connection //用于连接的TCP / IP端口号 --protocol Transport protocol to use //使用的传输协议 --shared-memory-base-name Shared-memory name for shared-memory connections (Windows only) //共享内存连接的共享内存名称(仅Windows) --socket Unix socket file or Windows named pipe to use ///Unix套接字文件或Windows命名管道使用 --user MySQL user name to use when connecting to server //连接服务器时使用的MySQL用户名
--default-auth=
plugin
有关使用哪个客户端身份验证插件的提示。请参见“可插入身份验证”。
--host=
,host_name
-h
host_name
运行MySQL服务器的主机。该值可以是主机名,IPv4地址或IPv6地址。默认值为
localhost
。
--password[=
,pass_val
]-p[
pass_val
]用于连接服务器的MySQL帐户的密码。密码值是可选的。如果未给出,程序将提示您输入一个。如果给出,则或 后面的密码之间 必须 没有空格。如果未指定密码选项,则默认为不发送密码。
--password=
-p
在Windows上,使用命名管道连接到服务器。仅当服务器在
named_pipe
启用系统变量以支持命名管道连接的情况下启动时,此选项才适用 。另外,建立连接的用户必须是named_pipe_full_access_group
系统变量指定的Windows组的成员 。在其中查找插件的目录。如果该
--default-auth
选项用于指定身份验证插件,但客户端程序找不到它,请指定此选项。请参见 “可插入身份验证”。对于TCP / IP连接,使用的端口号。默认端口号是3306。
--protocol={TCP|SOCKET|PIPE|MEMORY}
此选项显式指定用于连接到服务器的传输协议。当其他连接参数通常导致使用您想要的协议以外的协议时,此功能很有用。例如,
localhost
默认情况下,使用Unix套接字文件在Unix上进行连接:mysql --host=localhost
To force TCP/IP transport to be used instead, specify a
--protocol
option: //要强制使用TCP / IP传输,请指定一个--protocol
选项:mysql --host=localhost --protocol=TCP
The following table shows the permissible
--protocol
option values and indicates the applicable platforms for each value. The values are not case-sensitive.
--protocol
ValueTransport Protocol Used //使用的传输协议 Applicable Platforms //适用平台 TCP
TCP/IP transport to local or remote server //TCP / IP传输到本地或远程服务器 All SOCKET
Unix socket-file transport to local server //Unix套接字文件传输到本地服务器 Unix and Unix-like systems PIPE
Named-pipe transport to local server //命名管道传输到本地服务器 Windows MEMORY
Shared-memory transport to local server //共享内存传输到本地服务器 Windows 另外参阅:“连接传输协议” Section “Connection Transport Protocols”
--shared-memory-base-name=
name
On Windows, the shared-memory name to use for connections made using shared memory to a local server. The default value is
MYSQL
. The shared-memory name is case-sensitive.This option applies only if the server was started with the
shared_memory
system variable enabled to support shared-memory connections. //On Unix, the name of the Unix socket file to use for connections made using a named pipe to a local server. The default Unix socket file name is
/tmp/mysql.sock
.On Windows, the name of the named pipe to use for connections to a local server. The default Windows pipe name is
MySQL
. The pipe name is not case-sensitive.On Windows, this option applies only if the server was started with the
named_pipe
system variable enabled to support named-pipe connections. In addition, the user making the connection must be a member of the Windows group specified by thenamed_pipe_full_access_group
system variable. //在Unix上,Unix套接字文件的名称,该名称用于通过命名管道与本地服务器建立的连接。Unix套接字文件的默认名称为
/tmp/mysql.sock
。在Windows上,用于连接到本地服务器的命名管道的名称。Windows的默认管道名称为
MySQL
。管道名称不区分大小写。
--user=
,user_name
-u
user_name
The user name of the MySQL account to use for connecting to the server. The default user name is
ODBC
on Windows or your Unix login name on Unix. //用于连接到服务器的MySQL帐户的用户名。默认用户名ODBC
在Windows上,或者您的Unix登录名在Unix上。加密连接的命令选项
客户端程序的选项,这些选项指定是否使用到服务器的加密连接,证书和密钥文件的名称以及与加密连接支持有关的其他参数。有关建议使用的示例以及如何检查连接是否已加密的示例,请参见 “配置MySQL以使用加密的连接”。
注意这些选项仅对使用经过加密的传输协议的连接有效。即TCP / IP和Unix套接字文件连接。请参见 “连接传输协议”
有关使用MySQL C API中的加密连接的信息,请参阅C API对加密连接的支持。
关于shared_memory
shared_memory
Command-Line Format --shared-memory[={OFF|ON}]
System Variable shared_memory
Scope Global Dynamic No SET_VAR
Hint AppliesNo Platform Specific Windows Type Boolean Default Value OFF
(Windows only.) Whether the server permits shared-memory connections. //服务器是否允许共享内存连接。
Command-Line Format --shared-memory-base-name=name
System Variable shared_memory_base_name
Scope Global Dynamic No SET_VAR
Hint AppliesNo Platform Specific Windows Type String Default Value MYSQL
//用于共享内存连接的共享内存的名称。在单个物理计算机上运行多个MySQL实例时,这很有用。默认名称是
MYSQL
。名称区分大小写。仅当服务器在
shared_memory
启用系统变量以支持共享内存连接的情况下启动时,此变量才适用 。关于show engines; //显示有关服务器的存储引擎的状态信息。
mysql> show engines; +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | CSV | YES | CSV storage engine | NO | NO | NO | | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL | | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO | | MyISAM | YES | MyISAM storage engine | NO | NO | NO | | InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES | | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO | | ARCHIVE | YES | Archive storage engine | NO | NO | NO | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ 9 rows in set (0.00 sec)
Engine
存储引擎的名称。
Support
服务器对存储引擎的支持级别,如下表所示。
值 含义 YES
引擎受支持且处于活动状态 DEFAULT
就像一样 YES
,这是默认引擎NO
不支持引擎 DISABLED
支持引擎,但已将其禁用 值
NO
表示服务器在编译时不支持引擎,因此无法在运行时启用。的值
DISABLED
,因为服务器启动与关闭发动机,或者是因为不是所有的选项来启用它要求给予一个选项,无论发生。在后一种情况下,错误日志应包含指示为什么禁用该选项的原因。请参见 第5.4.2节“错误日志”。您可能还会看到
DISABLED
存储引擎,如果服务器经过编译以支持该服务器,但是该服务器是通过一个 选项启动的 。对于存储引擎,意味着服务器是在编译时支持NDB Cluster的,但未使用该选项启动。--skip-
engine_name
NDB
DISABLED
--ndbcluster
所有MySQL服务器都支持
MyISAM
表。无法禁用MyISAM
。
Comment
存储引擎的简要说明。
Transactions
存储引擎是否支持事务。
XA
存储引擎是否支持XA事务。
Savepoints
存储引擎是否支持保存点。
关于编码字符集utf8mb4:
参阅https://www.cnblogs.com/rainerl/p/10950472.html
//查看数据库的编码格式:
mysql> SHOW VARIABLES Like '%char%';或者:
mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';
![]()
关于MySQL中的8个 character_set 变量参看:https://blog.csdn.net/sun8112133/article/details/79921734
如果数据库、表已经创建可以直接修改数据库或表的编码格式:
查看数据表的编码格式
show
create
table
<表名>;
修改数据库的编码格式
mysql>
alter
database
<数据库名>
character
set
utf8mb4;
修改数据表格编码格式
alter
table
<表名>
character
set
utf8mb4;
修改字段编码格式
alter
table
<表名> change <字段名> <字段名> <类型>
character
set
utf8mb4;
复习常用命令:
//修改加密方式 mysql> ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'admin';
//刷新 mysql> flush privileges;
//修改加密规则 mysql> UPDATE mysql.user SET plugin='mysql_native_password' WHERE user='root';
//建数据create database test1;或者带反引号create database `test1`;注意不是引号.(反引号,就是键盘左上方~`,ESC键下面的那个键上)
//删除数据库drop database test1;
\q退出mysql,
例:
mysql> \q
Bye//cmd命令查看版本:
C:\mysql\bin> mysql -V
c:\mysql\bin\mysql.exe Ver 8.0.22 for Win64 on x86_64 (MySQL Community Server - GPL)//登录后查看版本
select version();
//在DOS命令行窗口登录MySQL,输入如下命令查看MySQL的安装目录和数据存放目录:
mysql> select @@basedir;
mysql> select @@datadir;
windows10 mysql8.0.22忘记密码解决大法,密码搞不定,不管什么原因,不官什么提示,就按下面的方法搞一下,省时高效.
忘记密码:
简要步骤:方案一:
1.服务端:mysqld --console --skip-grant-tables --shared-memory,
2.客户端:mysql -u root -p
密码置空:update mysql.user set authentication_string='' where user="root";
刷新:flush privileges; 密码置空之后,必须,刷新一下就可以设置密码了.
3.服务端重启:ctrl+c,两次,中止之前mysqld.然后运行mysqld --console
4.客户端:mysql -u root -p
设置密码:set password for 'root'@'localhost'='123';
OK
方案二:(此法较稳妥)
1.服务端:mysqld --console --skip-grant-tables --shared-memory,
2.客户端:mysql -u root -p
密码置空:update mysql.user set authentication_string='' where user="root";
刷新:flush privileges;
3.设置密码:ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'admin';
加密规则和密码同时改.ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'admin'; OK
注意:密码置空之后得flush privileges刷新一下,才能修改密码.不然会提示ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
回顾:改密码的三个命令方式:1.置空 update mysql.user set authentication_string='' where user='root'; 2.alter user 'root'@'localhost' identified by 'admin' 这一句中也可带上with 加密插件名称 3.set password for 'root'@'localhost'='admin'
方案三:
用前面二个方法不成功,出现ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
这种情况主要密码安全格式要求严格所致,一般在.exe安装方式安装mysql后或执行mysql_secure_installation之后,再改密码时出现 .
关于MySQL安全配置mysql_secure_installation参看https://blog.csdn.net/qq_29627051/article/details/105390362
https://www.jb51.net/article/47727.htm
按前面的方法修改密码,至密码置空之后,用alter user user() identified by 'admin';不成功,出现错误提示:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
根据提示信息,查看一下密码变量情况 :
1.SHOW VARIABLES LIKE 'validate_password%';
2.1重新更改密码级别:
set global validate_password.policy=0;或set global validate_password.policy=low;
注意变量名称不要打错,mysql5.7之前的变量名为validate_password_policy,后面是下划线,8.0.22的是点号.
2.2修改密码长度:set global validate_password.length=4;
3.flush privileges;
4. set password for 'root'@'localhost'='1234';或者ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'admin';都可以.
ok
(通过set global validate_password.policy=0;和set global validate_password.length=4;两个命令所修改的变量值0、4,在重启mysql服务之后,还会恢复原值MEDIUM和8.
但修改过的密码是可以用的).
常见问题
密码修改时出现:
这是因为服务用mysqld --console --skip-grant-tables --shared-memory
客户用做过密码置空后没作刷新到磁盘的操作:flush privileges;
所以set password for 'root'@'localhost'='123';不行.
解决办法就是:服务端窗口不关,用户端运行flush privileges;刷新一下,再执行set password for 'root'@'localhost'='123';改密码,
或者服务端窗口关掉重开窗口,或者不关而是以ctrl+c中止mysqld服务,一次ctrl+c可能不行,就再一次ctrl+c,中止mysql服务,然后运行不带skip的方式重启mysql服务:mysqld --console,在用户端再执行密码修改.
update mysql.user set 语句就是用来置空密码比较好.改密码就不要用这个update开头的语句
在服务端密码置空之后,可以执行update mysql.user set authentication_string='123' where user="root";貌似修改成功,但能看得到的,则一定是不成功的,因为正常情况下是加密的.实际验证也是如此.用密码123登录不了.
并且服务端每尝试登录一次时,在服务端会出现一句提示:
[Warning] [MY-013360] [Server] Plugin sha256_password reported: ''sha256_password' is deprecated and will be removed in a future release. Please use caching_sha2_password instead'
mysql报错RuntimeError: cryptography is required for sha256_password or caching_sha2_p
解决办法,涉及加密插件的问题,直接修改插件名及密码并刷新:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'admin';
FLUSH PRIVILEGES;
加密规则和密码同时改方法:
ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'admin'; OK
服务端运行mysqld --console --skip-grant-tables --shared-memory时,显示Plugin mysqlx reported: 'All I/O interfaces are disabled, X Protocol won't be accessible'
端口都disabled,但能连上,但不影响密码修改登录等操作.原因是带有--skip-grant-tables --shared-memory这个参数.
D:\>mysqld --console --skip-grant-tables --shared-memory
2020-11-12T22:57:36.424371Z 0 [System] [MY-010116] [Server] D:\mysql\bin\mysqld.exe (mysqld 8.0.22) starting as process 12692
2020-11-12T22:57:36.443671Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2020-11-12T22:57:36.903812Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2020-11-12T22:57:37.114523Z 0 [Warning] [MY-011311] [Server] Plugin mysqlx reported: 'All I/O interfaces are disabled, X Protocol won't be accessible'
2020-11-12T22:57:37.184229Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2020-11-12T22:57:37.186985Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2020-11-12T22:57:37.213365Z 0 [System] [MY-010931] [Server] D:\mysql\bin\mysqld.exe: ready for connections. Version: '8.0.22' socket: '' port: 0 MySQL Community Server - GPL.
2020-11-13T00:29:41.380805Z 0 [System] [MY-013105] [Server] D:\mysql\bin\mysqld.exe: Normal shutdown.
mysqld –skip-grant-tables实测在mysql8.0中已失效,现使用mysqld --console --skip-grant-tables --shared-memory
如果带--skip句但不带 --shared-memory会出现TCP/IP, --shared-memory, or --named-pipe should be configured on NT OS
则有:D:\>mysqld --console --skip-grant-tables
2020-11-13T00:32:36.846987Z 0 [System] [MY-010116] [Server] D:\mysql\bin\mysqld.exe (mysqld 8.0.22) starting as process 10644
2020-11-13T00:32:36.865672Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2020-11-13T00:32:37.661463Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2020-11-13T00:32:37.896336Z 0 [Warning] [MY-011311] [Server] Plugin mysqlx reported: 'All I/O interfaces are disabled, X Protocol won't be accessible'
2020-11-13T00:32:37.965989Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2020-11-13T00:32:37.968691Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2020-11-13T00:32:37.994257Z 0 [System] [MY-010931] [Server] D:\mysql\bin\mysqld.exe: ready for connections. Version: '8.0.22' socket: '' port: 0 MySQL Community Server - GPL.
2020-11-13T00:32:37.998367Z 0 [ERROR] [MY-010131] [Server] TCP/IP, --shared-memory, or --named-pipe should be configured on NT OS
2020-11-13T00:32:38.001076Z 0 [ERROR] [MY-010119] [Server] Aborting
2020-11-13T00:32:38.882412Z 0 [ERROR] [MY-013183] [InnoDB] Assertion failure: trx0sys.cc:661:UT_LIST_GET_LEN(trx_sys->mysql_trx_list) == 0 thread 11404
InnoDB: We intentionally generate a memory trap.
InnoDB: Submit a detailed bug report to http://bugs.mysql.com.
InnoDB: If you get repeated assertion failures or crashes, even
InnoDB: immediately after the mysqld startup, there may be
InnoDB: corruption in the InnoDB tablespace. Please refer to
InnoDB: http://dev.mysql.com/doc/refman/8.0/en/forcing-innodb-recovery.html
InnoDB: about forcing recovery.
00:32:38 UTC - mysqld got exception 0x80000003 ;
Most likely, you have hit a bug, but this error can also be caused by malfunctioning hardware.
Thread pointer: 0x0
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong...
7ff63fe0ff62 mysqld.exe!my_sigabrt_handler()[my_thr_init.cc:372]
7ffb29b2caad ucrtbase.dll!raise()
7ffb29b2dab1 ucrtbase.dll!abort()
7ff6400375a0 mysqld.exe!ut_dbg_assertion_failed()[ut0dbg.cc:98]
7ff63fff9666 mysqld.exe!trx_sys_after_background_threads_shutdown_validate()[trx0sys.cc:661]
7ff63ff41263 mysqld.exe!srv_shutdown_cleanup_and_master_stop()[srv0start.cc:3348]
7ff63ff40917 mysqld.exe!srv_shutdown()[srv0start.cc:3558]
7ff63fef348e mysqld.exe!innodb_shutdown()[ha_innodb.cc:1345]
7ff63ee6aed7 mysqld.exe!ha_finalize_handlerton()[handler.cc:722]
7ff63ee7b42a mysqld.exe!plugin_deinitialize()[sql_plugin.cc:1116]
7ff63ee809d2 mysqld.exe!reap_plugins()[sql_plugin.cc:1187]
7ff63ee7f6c8 mysqld.exe!plugin_shutdown()[sql_plugin.cc:2031]
7ff63ee1e003 mysqld.exe!clean_up()[mysqld.cc:2427]
7ff63ee30366 mysqld.exe!unireg_abort()[mysqld.cc:2296]
7ff63ee2efa4 mysqld.exe!setup_conn_event_handler_threads()[mysqld.cc:3120]
7ff63ee321b2 mysqld.exe!win_main()[mysqld.cc:7468]
7ff63ee2bf55 mysqld.exe!mysql_service()[mysqld.cc:7564]
7ff63ee2c59c mysqld.exe!mysqld_main()[mysqld.cc:7780]
7ff640443d28 mysqld.exe!__scrt_common_main_seh()[exe_common.inl:288]
7ffb2b507c24 KERNEL32.DLL!BaseThreadInitThunk()
7ffb2bf4cea1 ntdll.dll!RtlUserThreadStart()
The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
information that should help you find out what is causing the crash.D:\>
解决办法是在my.ini文件中[mysqld]下加入shared-memory
而带了就可以:D:\>mysqld --console --skip-grant-tables --shared-memory
2020-11-13T00:34:12.062707Z 0 [System] [MY-010116] [Server] D:\mysql\bin\mysqld.exe (mysqld 8.0.22) starting as process 6508
2020-11-13T00:34:12.082022Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2020-11-13T00:34:12.912690Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2020-11-13T00:34:13.185694Z 0 [Warning] [MY-011311] [Server] Plugin mysqlx reported: 'All I/O interfaces are disabled, X Protocol won't be accessible'
2020-11-13T00:34:13.256012Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2020-11-13T00:34:13.258642Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2020-11-13T00:34:13.285092Z 0 [System] [MY-010931] [Server] D:\mysql\bin\mysqld.exe: ready for connections. Version: '8.0.22' socket: '' port: 0 MySQL Community Server - GPL.
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to
mysql错误4200系列有很多,可参考:
mysql错误代码对照表https://blog.csdn.net/aidenliu/article/details/5925604
1064也有多种情况,常见的是语法格式错误,比如新建数据库时,最易出错是数据库的名称是用键盘左上角处`~键上的那个反引号`,通常会输入',导致出错.
在建数据时,库名不带任何引号也是可以的(8.0.22上没问题)
修改密码时出现ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
这种情况主要密码安全格式要求严格所致,一般在.exe安装方式安装mysql后或执行mysql_secure_installation之后,再改密码时出现 .
(关于MySQL安全配置mysql_secure_installation参看https://www.jb51.net/article/47727.htm)
1.SHOW VARIABLES LIKE 'validate_password%';
2.1重新更改密码级别:
set global validate_password.policy=0;或set global validate_password.policy=low;
注意变量名称不要打错,mysql5.7之前的变量名为validate_password_policy,后面是下划线,8.0.22的是点号.
2.2修改密码长度:set global validate_password.length=4;
3.flush privileges;
4. set password for 'root'@'localhost'='1234';或者ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'admin';都可以.
ok
通过set global validate_password.policy=0;和set global validate_password.length=4;两个命令所修改的变量值0、4,在重启mysql服务之后,还会恢复原值MEDIUM和8.
但修改过的密码是可以用的.(大概是不溯既往吧.)
还可使用 mysql_secure_installation 命令修改root密码
关于MySQL安全配置mysql_secure_installation参看https://www.jb51.net/article/47727.htm
扩展:关于MySQL中的8个 character_set 变量说明https://blog.csdn.net/sun8112133/article/details/79921734 (在运行mysql_secure_installation时,出现提示:mysql_secure_installation: [ERROR] unknown variable 'default-character-set=utf8mb4'.
解决办法:在my.ini文件中,注释掉那句[mysql]default-character-set=utf8mb4即可.似乎用不到该句,[mysql]
# 设置mysql客户端默认字符集
# default-character-set=utf8mb4 //>mysql_secure_installation提示mysql_secure_installation: [ERROR] unknown variable 'default-character-set=utf8mb4'.在服务端有一句就行了:# 服务端使用的字符集默认为utf8mb4
[mysqld]character-set-server=utf8mb4
)
客户端:mysql_secure_installation;
参见:https://blog.csdn.net/weixin_45625174/article/details/106447654:
- 运行mysql_secure_install需执行几个设置:
- root用户设置密码
- 删除匿名账号
- 删除test库和test库的访问权限
- 刷新授权表使修改生效
通过设置这几项能够提高MySQL的安全性,建议生成环境中安装完成MySQL一定要执行“mysql_secure_install
实例:
[root@www ~]# mysql_secure_installation Enter password for user root: ----输入MySQLroot密码 The 'validate_password' plugin is installed on the server. The subsequent steps will run with the existing configuration of the plugin. Using existing password for root.Estimated strength of the password: 50 Change the password for root ? ((Press y|Y for Yes, any other key for No) :No-----是否修改root密码,如果输入y会要求修改密码,这设置No不修改密码... skipping. By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment.Remove anonymous users? (Press y|Y for Yes, any other key for No) :y --是否删除匿名用户,这里建议删除。 Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network.Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y --是否禁止root远程登陆,这里建议禁止。 Success.By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment.Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y ----是否删除test库,y删除。- Dropping test database... Success.- Removing privileges on test database... Success.Reloading the privilege tables will ensure that all changes made so far will take effect immediately.Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y --是否重新加载权限表,y重新加载。 Success.All done!
进入mysql后需要改全局变量,要不然设置密码要符合密码复杂度。
参阅:MySQL 重新安装踩的坑https://blog.csdn.net/shaxixide/article/details/104312878
netstat -aon|findstr 3306
忘记密码,解决办法详细版,如下:
以管理员方式
打开shell窗口
首先开一窗口A运行服务端
mysqld -remove mysql (删除mysql服务)
taskkill /f /im mysqld.exe 删除mysqld进程
mysqld --console --skip-grant-tables --shared-memory 跳过权限表启动服务(这样不必去修改my.ini)
开一窗口B
2.置密码为空
mysql> select host,user,user password,plugin,authentication_string from mysql.user;
注:8.0.22保存密码的字段为authentication_strin
这里的password看着是一个字段,但select password不会显示,会报错,其对就的是user password.在这里似乎不能用update的方式来增加密码,试了,电脑好长时间无回馈.
此时空密码状态下,改变密码可用ALTER user 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'admin';
注意: 特别提醒注意的一点是,新版的mysql数据库下的user表中已经没有Password字段了 而是将加密后的用户密码存储于authentication_string字段。
4.修改密码
加密规则和密码同时改.ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'admin'; OK
(ALTER user 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'admin';这个加密对应插件是用caching_sha2_password)
此时再查看
mysql> select host,user,user password,plugin,authentication_string from mysql.user;
密码admin是经过加密之后内容,看不懂才正常.不是明语文显示.
5.alter user user() identified by "admin";也可以修改密码.
如果修改当前登录身份的密码直接用alter user user() identified by "123";有时也可以.
但是
有时ALTER user user() IDENTIFIED BY 'admin';
会提示出错
:
ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'skip-grants host'
刷新也无用.
而用ALTER user 'root'@'localhost' IDENTIFIED BY 'admin';或者ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'admin';可以.
所以,稳妥点还是多打几个字用有@的比用user()效果好.
特殊例外:用上述方法修改密码出现ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
这种情况主要密码安全格式要求严格所致,一般在.exe安装方式安装mysql后或执行mysql_secure_installation之后,再改密码时出现 .
关于MySQL安全配置mysql_secure_installation参看https://blog.csdn.net/qq_29627051/article/details/105390362
https://www.jb51.net/article/47727.htm
按前面的方法修改密码,至密码置空之后,用alter user user() identified by 'admin';不成功,出现错误提示:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
根据提示信息,查看一下密码变量情况 :SHOW VARIABLES LIKE 'validate_password%';
关于密码要求参考:
密码级别变量validate_password.policy为medium,
重新更改密码级别:
set global validate_password.policy=0;或set global validate_password.policy=low;
注意变量名称不要打错,mysql5.7之前的变量名为validate_password_policy,后面是下划线,8.0.22的是点号.
再次修改密码:
还是出错,再看密码变量值:show variables like 'validate_password%';
密码长度不合格,再修改下长度:set global validate_password.length=4;
再次修改密码:(须flush privileges;刷新之后再修改密码才行.)
(通过set global validate_password.policy=0;和set global validate_password.length=4;两个命令所修改的变量值0、4,在重启mysql服务之后,还会恢复原值MEDIUM和8.
但修改过的密码是可以用的).
RESTART语句
RESTAR
该语句停止并重新启动MySQL服务器。它需要
SHUTDOWN
特权。一种用途
RESTART
是在无法或不方便通过命令行访问服务器主机上的MySQL服务器以重新启动它时。例如,SET PERSIST_ONLY
可以在运行时用于对只能在服务器启动时设置的系统变量进行配置更改,但是仍必须重新启动服务器才能使这些更改生效。该RESTART
语句提供了一种从客户端会话中执行此操作的方法,而无需在服务器主机上进行命令行访问。注意执行
RESTART
语句后,客户端可以期望当前连接丢失。如果启用了自动重新连接,则在服务器重新启动后将重新建立连接。否则,必须手动重新建立连接。成功的
RESTART
操作要求mysqld在具有监视过程的环境中运行,该监视过程可用于检测出于重启目的而执行的服务器关闭:
在存在监视进程的情况下,
RESTART
导致 mysqld终止,以便监视进程可以确定它应该启动一个新的 mysqld实例。如果没有监视过程,则
RESTART
失败并显示错误。
注:8.0之后,下面这个改密码的语法格式不再有效,而换为其他方式了.
The
PASSWORD()
function. Additionally,PASSWORD()
removal means thatSET PASSWORD ... = PASSWORD('
syntax is no longer available.auth_string
')
show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
update mysql.user set authentication_string="123" where user="root"; #表示密码字段
拓展:
注意尝试连接到主机
127.0.0.1
通常会解析为该localhost
帐户。但是,如果服务器在skip_name_resolve
启用状态下运行,则此操作将失败 。如果您打算这样做,请确保存在一个可以接受连接的帐户。例如,要能够root
使用--host=127.0.0.1
或 进行连接--host=::1
,请创建以下帐户:CREATE USER 'root'@'127.0.0.1' IDENTIFIED BY 'root-password'; CREATE USER 'root'@'::1' IDENTIFIED BY 'root-password';
可以将这些语句放在要使用
init_file
系统变量执行的文件中,如 数据目录初始化期间的服务器操作中所述。
安装最新mysql 8.0.22在windows10相关推荐
- mysql 8.0.22_最新版MySQL 8.0.22下载安装超详细教程(Windows 64位)
前言 前几天下载安装了最新版的MySQL 8.0.22,遇到了不少问题,参考了一些方法,最终得以解决.今天将自己的安装过程记录下来,希望对各位有所帮助. 一.MySQL 8.0.22官网下载 点击进入 ...
- 用最新MySQL 8.0的源安装MySQL 5.7版本(CentOS 7环境下)
起因: 从官网下了MySQL最新8.0版本的源,安装了MySQL 8.0.13,但是发现版本太新了跟其他软件不兼容,而且改了半天其他软件配置都没改好(囧rz)...算了,卸载了8.0,还是安回5.7的 ...
- ubuntu 安装docker mysql 8.0.28
ubuntu 安装docker mysql 8.0.28 1. ubuntu 版本信息更新系统 webrx@us:~$ sudo apt update [sudo] webrx 的密码: 命中:1 h ...
- 国行 iPhone 12/Pro/Max双卡模式支持5G网络;支付宝推出「晚点付」功能;MySQL 8.0.22 GA|极客头条
整理 | 郑丽媛 头图 | CSDN 下载自东方 IC 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 国内 ...
- mysql8.2安装教程_mysql 8.0.22压缩包完整安装与配置教程图解(亲测安装有效)
1.下载zip安装包 点击此处下载MySQL server 8.0.22压缩包 下载后直接解压即可 2.解压,并配置环境变量 2.1 解压zip包到安装目录,我的解压在了D:MySQLmysql-8. ...
- mysql8导入 psc 没有数据_新特性解读 | MySQL 8.0.22 任意格式数据导入
作者:杨涛涛 资深数据库专家,专研 MySQL 十余年.擅长 MySQL.PostgreSQL.MongoDB 等开源数据库相关的备份恢复.SQL 调优.监控运维.高可用架构设计等.目前任职于爱可生, ...
- 《MySQL 8.0.22执行器源码分析(4.1)Item_sum类以及聚合》
Item_sum类用于SQL聚合函数的特殊表达式基类. 这些表达式是在聚合函数(sum.max)等帮助下形成的.item_sum类也是window函数的基类. 聚合函数(Aggregate Funct ...
- 《MySQL 8.0.22执行器源码分析(3.2)关于HashJoinIterator》
在本文章之前,应该了解的概念: 连接的一些概念.NLJ.BNL.HashJoin算法. 目录 关于join连接 probe行保存概念 Hashjoin执行流程(十分重要) HashJoinIterat ...
- 在mysql 8.0.22 运行load data local 从本地文本导入数据
在mysql 8.0.22 运行load data local 从本地文本导入数据时,报错:"ERROR 3948(42000): Loading local data is disable ...
最新文章
- mysql 快捷查询数据库各表占用空间,mysql查看索引占用空间,mysql查看数据占用空间
- Ubuntu开启防火墙
- 学习C++,知识点太多记不住怎么办?
- php删除第一个字母,php – 正在上传的文件将第一个字母切断
- python一个对象只能被一个变量引用吗_Python中的变量、对象、引用
- Destoon数据库配置文件在哪_SpringBoot中yml配置文件说明和一些常用配置项说明
- 数据结构——红黑树(red-black tree)
- 【sklearn第十四讲】决策树之分类篇
- 仿百篮应用市场(已开源)
- 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_20-CMS前端页面查询开发-页面原型-页面内容完善...
- MFC粉丝(mfcclub)全自动抢购过程(自动识别输入验证码)
- Spyder的安装与汉化
- TearDrop代码编程与SOCKET应用实例
- windows下bat脚本实现定时删除指定文件夹下的文件和文件夹
- 异次元店铺 - 最适合你的个人店铺系统源码(原荔枝发卡)
- 柱状图python_鬼灭之刃:鬼杀队九柱实力排行,霞柱是强弱分界线
- IT视频教程百度云盘链接分享
- 山东大学中外合作计算机专业,山东大学威海分校计算机专业
- 网络数据的背后——网络日志的分析指标
- LiveData Coroutine Builder的5个诡计