每日一听
下载MySQL安装包
配置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
初始化成功后会产生一个默认密码,一定要复制这个默认密码
如果遇到MSVCP140.dll
缺失
前往 微软官网 下载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
按照提示输入刚才复制的密码
设置新密码
在安装完成之后,登录到数据库,不管执行任何命令,都会出现以下错误:
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
是否将密码与当前会话的有效用户帐户的用户名部分进行比较,如果匹配则拒绝它们。除非已安装,否则此变量不可用。
因此如果这里为ON,那么就不能把账号和密码设置为相同的值
validate_password.dictionary_file
用于检查密码的字典文件的路径名。除非已安装,否则此变量不可用。
validate_password.length
需要密码的最少字符数。除非已安装,否则此变量不可用。
validate_password.length 最小值是其他几个相关系统变量的函数。该值不能设置为小于此表达式的值:
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
由 强制执行的密码策略。除非已安装,否则此变量不可用。
validate_password.policy 会影响其其他策略(不包括validate_password.check_user_name)设置系统变量的使用方式,例如,设置为LOW将只检查长度。
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 '满足策略的密码';