Linux环境准备
1、查看Linux环境是否安装过MariaDB
centos7 默认安装的 mariadb,没有 mysql,不卸载会出现冲突。
查看是否安装mariadb:yum list installed | grep mariadb
存在则卸载mariadb:yum remove -y mariadb-libs
2、检查是否已经安装过 mysql。
rpm -qa | grep -i mysql
若有安装过 mysql,视情况是否需要卸载(rpm -e xxxx --nodeps)。
3、手动删除my.cnf文件
卸载后/etc/my.cnf不会自动删除,需要手工删除。
Mysql安装
1、查看Linux内核
cat /proc/version 或 uname -a
根据el7的版本下载对应的mysql包。
2、安装包下载:
参考Mysql官方网文档:https://dev.mysql.com/doc/refman/8.0/en/
下载地址:https://dev.mysql.com/downloads/mysql/
选择:Red Hat Enterprise Linux / Oracle Linux
操作系统版本:el7选Linux7,el8选Linux8
下载:RPM Bundle(mysql-8.0.26-1.el8.x86_64.rpm-bundle.tar)
3、Linux安装
上传tar包到linux环境。
创建mysql目录存放tar解压文件:mkdir mysql8
解压:tar -xvf mysql-8.0.26-1.el8.x86_64.rpm-bundle.tar -C ./mysql8
安装:sudo yum install mysql-community-{server,client,common,libs}-*
安装过程可能会提示缺依赖,安装即可。
等待安装结束后,查看是否安装成功:mysqladmin --version
Mysql大小写敏感问题:
1、MySQL在Windows下大小写**不敏感**,不区分大小写。
2、MySQL在linux下大小写**敏感**,区分大小写。
Mysql大小写敏感只是针对数据库名、表名、别名等,列名与列的别名在所有的情况下均是忽略大小写的。
根据情况设置大小写是否敏感:
Linux下mysql安装完后是默认:区分表名的大小写,不区分列名的大小写;
方法1:/etc/my.cnf 中的[mysqld]后添加添加lower_case_table_names=1,重启MYSQL服务。
lower_case_table_names 说明:
lower_case_table_names = 0时,mysql会根据表名直接操作,大小写敏感。
lower_case_table_names = 1时,mysql会先把表名转为小写,再执行操作。
方法2:/usr/sbin/mysqld --initialize --user=mysql --lower-case-table-names=1
注:初始化前确定大小写敏感配置正确,Mysql在初始化后无法再修改lower_case_table_names参数,只能重装。
初始化数据库:
启动Mysql:systemctl start mysqld
查看默认root密码:sudo grep 'temporary password' /var/log/mysqld.log
用默认密码登录:mysql -uroot -p
4、重置密码
登录mysql修改root密码:ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
简单的密码问题,由于Mysql8的密码安全策略问题,默认不支持过于简单的密码,如果要支持简单密码此处可修改密码策略,修改完后重新设置用户密码即可。
临时修改:
set global validate_password.policy=0;(0/LOW只验证长度)
set global validate_password.length=6;(6位密码)
永久修改:
查看默认策略:SHOW VARIABLES LIKE 'validate_password%';
修改策略级别: set global validate_password_policy=LOW;(0/LOW只验证长度)
修改密码长度:set global validate_password_length=6;(6位密码)
完成设置后便可设置简单的密码了。
Navicat客户端远程连接,需要设置user表中账号对应的Host从 localhost 修改为 % :
use mysql;
update user set host='%' where user='root';
flush privileges;
拓展:
关于 mysql 密码策略相关参数;
validate_password_length 固定密码的总长度;
validate_password_dictionary_file 指定密码验证的文件路径;
validate_password_mixed_case_count整个密码中至少要包含大/小写字母的总个数;
validate_password_number_count 整个密码中至少要包含阿拉伯数字的个数;
validate_password_policy 指定密码的强度验证等级,默认为 MEDIUM;
validate_password_policy 的取值0/LOW:只验证长度;
1/MEDIUM:验证长度、数字、大小写、特殊字符;
2/STRONG:验证长度、数字、大小写、特殊字符、字典文件;
validate_password_special_char_count 整个密码中至少要包含特殊字符的个数;