写于 2022-03-02
系统版本,centos7
数据库版本,mysql5.7
使用yum方式安装
第一步,清理旧系统残留,或之前安装失败时生成的文件。主要是:
一. 在Yum中卸载安装残留,命令为 yum remove 旧rpm文件名
二. 删除 /etc/my.cnf 这个文件,否则很容易出现安装成功但是启动失败的情况。
第二步,去mysql官网下载压缩包 ,命令如下:
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.37-1.el7.x86_64.rpm-bundle.tar
第三步,解压缩,命令为 tar -xvf mysql-5.7.37-1.el7.x86_64.rpm-bundle.tar
会得到以下11个文件
mysql-community-devel-5.7.37-1.el7.x86_64.rpm
mysql-community-libs-5.7.37-1.el7.x86_64.rpm
mysql-5.7.37-1.el7.x86_64.rpm-bundle.tar
mysql-community-embedded-5.7.37-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.37-1.el7.x86_64.rpm
mysql-community-client-5.7.37-1.el7.x86_64.rpm
mysql-community-embedded-compat-5.7.37-1.el7.x86_64.rpm
mysql-community-server-5.7.37-1.el7.x86_64.rpm
mysql-community-common-5.7.37-1.el7.x86_64.rpm
mysql-community-embedded-devel-5.7.37-1.el7.x86_64.rpm
mysql-community-test-5.7.37-1.el7.x86_64.rpm
第四步,执行安装命令 yum install mysql-community-{libs,client,common,server}-*.rpm
这样安装的好处是:避免在线安装时,出现"GPG 密钥已安装,但是不适用于此软件包。请检查仓库的公钥 URL 是否配置正确"的错误,aliyun等第三方yum源必然是不如官方的rpm文件正宗。
第五步,修改 /etc/my.cnf文件,添加一行:
character-set-server=utf8
如果不确定这行写在哪里,可以加在文件最后。加入这行的原因是mysql5.7默认的编码不是utf8的,字符显示中文会有问题。
第六步,启动mysql服务:systemctl start mysqld
如果无法启动,原因多半是旧的 my.cnf 没有删除干净,或修改新生成的my.cnf时出错。
第七步,使用mysql临时密码登录,使用命令 grep "password" /var/log/mysqld.log
从 /var/log/mysqld.log文件中查看临时密码,
例如 "A temporary password is generated for root@localhost: uoeu:=>;K2Ta"
密码就是 uoeu:=>;K2Ta
如果发现mysqld.log是空的,多半还是旧版本残留导致的,着重检查my.cnf,正常的文件应该是这样(最后一行是我们手动加的):
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
character-set-server=utf8
登录mysql,命令为:mysql -u root -p
填入临时密码
第八步,更改密码。登入mysql后先使用命令 (注意mysql中的命令是要加分号的)
set global validate_password_policy=0;
降低mysql对密码的风险校验,此时密码规则变更为不少于8位。如果觉得过长可以使用如下命令:
set global validate_password_length=6;
将密码长度变更为6位。
然后使用命令
ALTER USER 'root'@'localhost' IDENTIFIED BY 'xxxxxx';
这样mysql的root密码就成为了6个x
第九步,将mysqld加入到系统服务。
先说一下,按照这个安装步骤,yum会自动把mysqld设置为随系统自启动。这里主要说明ContOS7之后,实现自启动的方式变了。
进入目录 /usr/lib/systemd/system
里面有若干的.service文件,即CentOS7之后,所有的自启动服务在这个目录里。
在这里你会发现一个mysqld.service文件,内容如下:
# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0
# Execute pre and post scripts as root
PermissionsStartOnly=true
# Needed to create system tables
ExecStartPre=/usr/bin/mysqld_pre_systemd
# Start main service
ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS
# Use this to switch malloc implementation
EnvironmentFile=-/etc/sysconfig/mysql
# Sets open_files_limit
LimitNOFILE = 5000
Restart=on-failure
RestartPreventExitStatus=1
PrivateTmp=false
如果想添加其他服务自启动,仿照着写一个.service文件,放到 /usr/lib/systemd/system 下。
第十步:忘记mysql的密码之后,如何修改mysql密码。
这个应该是健忘症者刚需了。。
停止mysql服务,命令为:
systemctl stop mysqld
打开配置文件,命令为:
vi /etc/my.cnf
添加一行:
skip-grant-tables
保存后启动mysql服务:
systemctl start mysqld
登录mysql:
mysql -u root
输入命令(将命令中的xxxxxx替换为你的密码即可):
update mysql.user set authentication_string=password('xxxxxx') where user='root';
最后把 /etc/my.cnf 中添加的那一句 skip-grant-tables 去掉