目录
问题一:timestamp设置默认值'0000-00-00 00:00:00'报错
准备工作
检查是否之前安装有mysql:rpm -qa | grep -i mysql
检查是否安装有mariadb:rpm -qa | grep mariadb
若有安装,需先卸载。
卸载mysql:
参考教程:https://blog.csdn.net/our_times/article/details/98882701
卸载mariadb:
rpm -e mariadb-libs-5.5.68-1.el7.x86_64 --nodeps
再次查看rpm -qa | grep mariadb没有啦
下载
下载地址:https://dev.mysql.com/downloads/mysql/
安装
参考教程:https://www.cnblogs.com/yanglang/p/10782941.html
1、上传文件
cd /usr/local
mkdir mysql
cd mysql
上传下载后的安装包到/usr/local/mysql
解压:tar -xvf mysql-8.0.11-1.el7.x86_64.rpm-bundle.tar
2、安装组件
通过 rpm -ivh mysql-community-common-8.0.11-1.el7.x86_64.rpm --nodeps --force 命令安装 common
通过 rpm -ivh mysql-community-libs-8.0.11-1.el7.x86_64.rpm --nodeps --force 命令安装 libs
通过 rpm -ivh mysql-community-client-8.0.11-1.el7.x86_64.rpm --nodeps --force 命令安装 client
通过 rpm -ivh mysql-community-server-8.0.11-1.el7.x86_64.rpm --nodeps --force 命令安装 server
rpm -ivh mysql-community-common-8.0.26-1.el7.x86_64.rpm --nodeps --force rpm -ivh mysql-community-libs-8.0.26-1.el7.x86_64.rpm --nodeps --force rpm -ivh mysql-community-client-8.0.26-1.el7.x86_64.rpm --nodeps --force rpm -ivh mysql-community-server-8.0.26-1.el7.x86_64.rpm --nodeps --force |
通过 rpm -qa | grep mysql 命令查看 mysql 的安装包
3、初始化
通过以下命令,完成对 mysql 数据库的初始化和相关配置
mysqld --initialize;
chown mysql:mysql /var/lib/mysql -R;
systemctl start mysqld.service;
systemctl enable mysqld;
出现问题:
执行mysqld --initialize;报错:
mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
解决:
yum install -y libaio
之后重新初始化
4、修改密码
通过 cat /var/log/mysqld.log | grep password 命令查看数据库的默认密码
登录: mysql -uroot -p
输入默认密码
修改密码为123456:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
成功后退出exit用新密码重新登录
修改密码可能出现的问题:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
密码太简单,需要修改密码策略
当执行SHOW VARIABLES LIKE 'validate_password%'; 查看密码策略时报错:
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
需要先修改密码,先改成一个复杂点的密码:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '1qaz!QAZ@migu123';
SHOW VARIABLES LIKE 'validate_password%';
set global validate_password.policy=0;
set global validate_password.length=4;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
密码修改完即可继续下面的步骤(若首次修改密码成功则无需关注以上问题)
通过以下命令,进行远程访问的授权:
create user 'root'@'%' identified with mysql_native_password by '123456';
grant all privileges on *.* to 'root'@'%' with grant option;
flush privileges;
修改加密规则:
通过 ALTER USER 'root'@'localhost' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER; 命令修改加密规则,MySql8.0 版本 和 5.0 的加密规则不一样,而现在的可视化工具只支持旧的加密方式。
通过 flush privileges; 命令刷新修该后的权限
问题
问题一:timestamp设置默认值'0000-00-00 00:00:00'报错
执行sql时存在报错:
sql:
`time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP COMMENT '签到时间',
报错:
Invalid default value for 'time'
查看:
show variables like 'sql_mode';
结果:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
解决方案:删除NO_ZERO_IN_DATE,NO_ZERO_DATE
方法一
执行sql
set session
sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
(我使用方法一无效)
方法二
vim /etc/my.cnf
[mysqld]下添加:
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
重启即可
问题二:设置表名忽略大小写
直接在my.cnf的[mysqld]下添加:lower_case_table_names=1后重启会失败
参考解决方法:https://www.cnblogs.com/czwbig/p/9961069.html
在安装完成之后,初始化数据库之前,修改 my.cnf
打开mysql配置文件
vim /etc/my.cnf
在尾部追加一行
lower_case_table_names=1
并保存,然后再初始化数据库。
重启mysql,
systemctl restart mysqld.service
如果这个操作是初始化数据库之后,也就是安装后运行过服务,那就可能会出错。
错误类似于Job for mysqld.service failed because the control process exited with error...
然后就无法启动 mysql 服务了,除非打开 vim /etc/my.cnf把追加的lower_case_table_names=1删除掉。
最后解决方法如下:
如果你不在意数据的话直接删除数据
停止MySQL
systemctl stop mysqld.service
删除 MySQL的数据 /var/lib/mysql
rm -rf /var/lib/mysql
再按照上面的方法进行一遍操作即可
(重启之后需要重新设置新密码,会出现设置123456太简单报错的问题,解决方式上边有)