Loading... ## 每日一听 <div class='handsome_aplayer player-content' data-preload="auto" data-autoplay="false" data-listMaxHeight="340px" data-order="list"> <div class="handsomePlayer-tip-loading"><span></span> <span></span> <span></span> <span></span><span></span></div><div class="handsome_aplayer_music" data-id="1365393542" data-server="netease" data-type="song" data-auth="c470080971ebdde98718b96525565e63"></div> </div> --- ## 下载MySQL安装包 <div class="tab-container post_tab box-shadow-wrap-lg"> <ul class="nav no-padder b-b scroll-hide" role="tablist"> <li class='nav-item active' role="presentation"><a class='nav-link active' style="" data-toggle="tab" aria-controls='tabs-f840c4b68c67ed363413809181246978910' role="tab" data-target='#tabs-f840c4b68c67ed363413809181246978910'>5.7版本</a></li><li class='nav-item ' role="presentation"><a class='nav-link ' style="" data-toggle="tab" aria-controls='tabs-38b08d354ea546274660b616c471d7aa421' role="tab" data-target='#tabs-38b08d354ea546274660b616c471d7aa421'>8.0版本</a></li> </ul> <div class="tab-content no-border"> <div role="tabpanel" id='tabs-f840c4b68c67ed363413809181246978910' class="tab-pane fade active in"> 进入[MySql下载地址](https://downloads.mysql.com/archives/community/)下载MySql压缩包: .png) </div><div role="tabpanel" id='tabs-38b08d354ea546274660b616c471d7aa421' class="tab-pane fade "> 进入[MySql下载地址](https://dev.mysql.com/downloads/mysql/)下载MySql压缩包: .png) </div> </div> </div> ## 配置MySQL数据库 将压缩包解压至指定目录,示例解压到 `D:\mysql` 路径下 新建 `my.ini` 配置文件 ``` [client] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] # 设置数据库端口 port = 3306 # 设置mysql的安装目录 basedir=D:\\mysql\\mysql-8.0.32 # 设置 mysql数据库的数据的存放目录 # 系统会自己生成,配置此项有可能会报错 #datadir=D:\\mysql\\mysql-8.0.32\\data # 允许最大连接数 max_connections=20 # 服务端使用的字符集默认为8比特编码的latin1字符集 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB # 有的人需要设置此项,不然可能会报错, # 其原因是从5.6开始,timestamp的默认行为已经是deprecated了 show_compatibility_56 = ON ``` ## 初始化MySQL数据库 以**管理员身份**运行命令提示符,切记一定要是以**管理员身份**运行,不然权限不够会报错 ``` # 进入D盘 C:\WINDOWS\system32>D: # 进入到MySql安装目录下的bin目录 D:\>cd mysql\mysql-8.0.32\bin # 初始化MySql数据库 D:\mysql\mysql-8.0.32\bin>mysqld --initialize --user=mysql --console ``` 初始化成功后会产生一个默认密码,一定要**复制**这个默认密码 .png) > **如果遇到 `MSVCP140.dll` 缺失** > 前往 [微软官网](https://learn.microsoft.com/en-US/cpp/windows/latest-supported-vc-redist?view=msvc-170) 下载 `Visual Studio` 即可解决 ## 注册MySQL服务 mysqld --install [服务名],服务名可以自定义 ``` D:\mysql\mysql-8.0.32\bin>mysqld --install mysql80 ``` ## 启停MySQL服务 注意:启动/停止MySql服务都需要以**管理员身份**运行 ``` # 启动MySql服务 C:\WINDOWS\system32>net start mysql # 关闭MySql服务 C:\WINDOWS\system32>net stop mysql # 重启MySql服务 C:\WINDOWS\system32>net restart mysql ``` ## 配置MySQL环境变量 添加如下环境变量 | 变量名| 变量值| | --- | --- | | MYSQL_HOME | mysql\mysql-8.0.32 | | Path | %MYSQL80_HOME%\bin | ## 修改MySQL数据库密码 ### 登录数据库 ``` D:\>mysql -u root -p ``` 按照提示输入刚才复制的密码 .png) ### 设置新密码 在安装完成之后,登录到数据库,不管执行任何命令,都会出现以下错误: ``` mysql> show databases; ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. mysql> use mysql; ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. ``` 解决方式如下: MySQL 版本 5.7.6 版本以前用户可以使用如下命令: ``` mysql> SET PASSWORD = PASSWORD('Root123.'); ``` MySQL版本5.7.6版本开始的用户可以使用如下命令: ``` mysql> ALTER USER USER() IDENTIFIED BY 'Root123.'; ``` 如果要设置简单密码,需要修改密码策略。 ### 查看密码策略 ``` mysql> SHOW VARIABLES LIKE 'validate_password.%'; +--------------------------------------+--------+ | Variable_name | Value | +--------------------------------------+--------+ | validate_password.check_user_name | ON | | validate_password.dictionary_file | | | validate_password.length | 8 | | validate_password.mixed_case_count | 1 | | validate_password.number_count | 1 | | validate_password.policy | MEDIUM | | validate_password.special_char_count | 1 | +--------------------------------------+--------+ ``` 如果返回以下结果,原因为没有安装 `validate_password` 插件,就不需要修改密码策略,直接修改密码即可 ``` mysql> SHOW VARIABLES LIKE 'validate_password.%'; Empty set, 1 warning **(**0.00 sec**)** ``` 如果需要安装 `validate_password` 插件,具体操作如下: ``` mysql**>** INSTALL COMPONENT **'file://component_validate_password'**; Query OK, 0 rows affected **(**0.10 sec**)** mysql> show variables like 'validate_password%'; +--------------------------------------+--------+ | Variable_name | Value | +--------------------------------------+--------+ | validate_password.check_user_name | ON | | validate_password.dictionary_file | | | validate_password.length | 8 | | validate_password.mixed_case_count | 1 | | validate_password.number_count | 1 | | validate_password.policy | MEDIUM | | validate_password.special_char_count | 1 | +--------------------------------------+--------+ ``` ### 修改密码策略 ``` --密码验证策略低要求(0或LOW代表低级) set global validate_password.policy=LOW; --密码至少要包含的小写字母个数和大写字母个数 set global validate_password.mixed_case_count=0; --密码至少要包含的数字个数。 set global validate_password.number_count=0; # 密码至少要包含的特殊字符数 set global validate_password.special_char_count=0; # 密码长度 set global validate_password.length=4; # 用户名与密码相同 set global validate_password.check_user_name=OFF ``` ### 变量含义 #### validate_password.check_user_name 是否将密码与当前会话的有效用户帐户的用户名部分进行比较,如果匹配则拒绝它们。除非已安装,否则此变量不可用。 <span style='color:#fe2c24'>因此如果这里为ON,那么就不能把账号和密码设置为相同的值</span> #### validate_password.dictionary_file 用于检查密码的字典文件的路径名。除非已安装,否则此变量不可用。 #### validate_password.length 需要密码的最少字符数。除非已安装,否则此变量不可用。 <span style='color:#fe2c24'>validate_password.length 最小值是其他几个相关系统变量的函数。该值不能设置为小于此表达式的值:</span> > validate_password.number_count > > + validate_password.special_char_count > + (2 * validate_password.mixed_case_count) #### validate_password.mixed_case_count 如果密码策略更强或更高,则要求密码具有的最小小写和大写字符数。除非已安装,否则此变量不可用。 对于给定的 validate_password.mixed_case_count 值,密码必须包含那么多小写字符和那么多大写字符。 #### validate_password.number_count 如果密码策略更强或更高,则要求密码具有的最小数字(数字)字符数。除非已安装,否则此变量不可用。 #### validate_password.policy 由 强制执行的密码策略。除非已安装,否则此变量不可用。 <span style='color:#fe2c24'>validate_password.policy 会影响其其他策略(不包括validate_password.check_user_name)设置系统变量的使用方式,例如,设置为LOW将只检查长度。</span> validate_password.policy 值可以使用数值 0、1、2 或相应的符号值 来指定,。下表描述了为每个策略执行的测试: | Policy | Tests Performed | | ----------------------- | ------------------------------------------------------------------------------- | | 0 orL OW | Length | | 1 or MEDIUM | Length; numeric, lowercase/uppercase, and special characters | | 2 or STRONG | Length; numeric, lowercase/uppercase, and special characters; dictionary file | #### validate_password.special_char_count 如果密码策略更强或更高,则要求密码具有的最小非字母数字字符数。除非已安装,否则此变量不可用。 validate_passwordMEDIUMvalidate_password ### 修改密码 ``` # 修改密码 mysql> alter user 'root'@'localhost' identified by '满足策略的密码'; # 按mysql_native_password加密方式修改密码 mysql> alter user 'root'@'localhost' identified with mysql_native_password by '满足策略的密码'; ``` 最后修改:2023 年 03 月 30 日 © 允许规范转载 赞 1