今天服务器删除挖矿脚本和定时任务之后,重置系统,导致文件系统只读。找官网建议重置系统,因为数据量小,所以不进行实例快照。重新安装数据库 本文大部分参考转载的连接,但原文有部分问题,所以加入了几个自己安装过程的错误解决过程
以下是通过yum安装数据库mysql的具体过程
- 先查看是否已经安装了mysql
rpm -qa|grep mysql #如果没有输出则说明未安装
- 在mysql 的yum库中找到linux对应版本
cat /etc/redhat-release #查看linux的版本
CentOS Linux release 8.2.2004 (Core)
- 复制对应版本的mysql源
- 下载mysql源
wget https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm
5. 安装mysql源
sudo rpm -Uvh mysql80-community-release-el8-1.noarch.rpm
这一步如果安装成功会在/etc/yum.repos.d/目录下生成两个repo文件
- 查看mysql 的相关资源
yum repolist enabled | grep "mysql.*-community.*"
7. 接下来选择安装mysql的版本
如果使用MySQL Yum Repository安装MySQL,默认会选择当前最新的稳定版本
使用命令:yum repolist all | grep mysql,查看当前yum repolist的所有版本
8. 进行mysql版本的切换 (我安装5.7版本的mysql)
sudo yum-config-manager --disable mysql80-community #禁用最新稳定版本
sudo yum-config-manager --enable mysql57-community #启用5.7
- 进行mysql的安装
sudo yum install mysql-community-server
如果这一步报错:没有任何匹配 如下图
根据官网描述,需要先进禁用mysql模块
禁用之后再执行上面的安装命令
sudo yum module disable mysql #禁用mysql模块
10. 启动mysql
systemctl start mysqld.service #启动mysql
systemctl status mysqld.service #查看mysql运行状态 q退出
11. 停止mysql命令
systemctl stop mysqld.service #停止mysql
- 重启mysql
systemctl restart mysqld.service #停止mysql
- 修改密码
mysql第一次启动的时候会自动创建超级管理员账号root@localhost,初始密码存储在日志文件当中:
grep 'temporary password' /var/log/mysqld.log #查看日志文件
14. 使用密码登陆
[root@sewell ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1184
Server version: 5.7.35
- 修改密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'test';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
解决方法如下:
使用复杂密码,MySQL默认的密码策略是要包含数字、字母及特殊字符;
如果只是测试用,不想用那么复杂的密码,可以修改默认策略,即validate_password_policy(以及validate_password_length等相关参数),使其支持简单密码的设定,具体方法可以参考:设置密码策略;
修改配置文件/etc/my.cnf,添加validate_password=OFF,保存并重启MySQL
修改报错后重启报错解决可参考:https://blog.youkuaiyun.com/aiyowei1106/article/details/88703746
-
设置编码
1)查看编码SHOW VARIABLES LIKE 'character%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+
2)设置编码
编辑/etc/my.cnf,[mysqld]节点增加以下代码[mysqld] character_set_server=utf8 init-connect='SET NAMES utf8'
-
设置开机启动
systemctl enable mysqld systemctl daemon-reload
-
关闭防火墙
允许远程登录
# firewall防火墙
systemctl status firewalld
# 查看转态
firewall-cmd --state
# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop
#注意分清楚linux的版本 命令会有所不同
#查看防火墙规则
firewall-cmd --list-all
-
删除mysql
1)检查mariadbrpm -qa|grep mariadb
如无则跳过下面一条
2)删除mariadbrpm -qa|grep mariadb
3)检查mysql
rpm -qa|grep mysql
4)删除mysql
rpm -e --nodeps xxx
-
数据库连接
如果要远程连接mysql数据库,需要linux在安全组配置3306端口TCP允许入的权限
如果使用root远程连接,可能会出现以下错误:
解决方法:
1) 在装有MySQL的机器上登录MySQL mysql -u root -p密码
2) 执行use mysql;
3)执行update user set host = ‘%’ where user = ‘root’;这一句执行完可能会报错,不用管它。
4)执行FLUSH PRIVILEGES; (一定要执行,否则上述修改不生效)
之后就可以使用root远程进行连接了