查看系统自带的Mariadb
[root@localhost~]# rpm -qa|grep mariadb
mariadb-libs-5.5.56-2.el7.centos.x86_64
卸载系统自带的Mariadb
[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.56-2.el7.centos.x86_64
[root@localhost ~]# rpm -qa | grep mysql
[root@localhost~]#
不存在的话直接创建就可以了。
创建mysql用户组
[root@localhost~]# groupadd mysql
创建一个用户名为mysql的用户,并加入mysql用户组
[root@localhost~]# useradd -g mysql mysql
修改mysql用户的密码
[root@localhost~]# passwd mysql
Changing password for user mysql.
New password:
BAD PASSWORD: ……
Retype new password:
passwd: all authentication tokens updated successfully.
大家可以到清华源中下载,速度很快,不想用最新的,所以选的mysql5.7.36。
https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-5.7/
我下的.tar.gz格式的。
上传方式有很多,如xmanager,不赘述。上传完成后解压
tar -zxvf mysql-5.7.36-el7-x86_64.tar.gz
重命名解压后的文件夹
mv mysql-5.7.36-el7-x86_64/ mysql57/
在其中创建两个文件夹,放数据文件和日志文件
cd mysql57/
mkdir data logs
切换到上一层目录
cd ..
将mysql57移动到/usr/local目录下
mv mysql57 /usr/local/
cd /usr/local
chown -R mysql:mysql mysql57
利用ll命令查看mysql57的用户和组是否全为mysql
vi /etc/my.cnf
内容如下:
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
# 设置3306端口
port = 3306
# 设置绑定IP
bind-address=0.0.0.0
# 设置mysql的安装目录
basedir=/usr/local/mysql57
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql57/data
# 日志的相关配置
log-error=/usr/local/mysql57/logs/error.log
# 不建议开日志,所有的操作都记录文件太大
# general-log=1
# log-output=FILE
# general-log-file=/usr/local/mysql57/logs/mysql.log
slow_query_log=1
long_query_time=3
slow_query_log_file=/usr/local/mysql57/logs/slowquery.log
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M
cd /usr/local/mysql57/bin
[root@localhost bin]# ./mysqld --initialize --user=mysql --basedir=/usr/local/mysql57 --datadir=/usr/local/mysql57/data
如果有报错请检查,看错误代码,主要是路径问题或权限问题
创建软链接
ln -s /usr/local/mysql57/bin/mysqld /usr/bin/mysqld
ln -s /usr/local/mysql57/bin/mysqld /usr/sbin/mysqld
ln -s /usr/local/mysql57/bin/mysql /usr/bin/mysql
ln -s /usr/local/mysql57/bin/mysql /usr/sbin/mysql
添加开机启动服务
vi /etc/systemd/system/mysqld.service
为该文件添加以下内容:
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
Type=forking
PIDFile=/usr/local/mysql57/mysqld.pid
# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0
# Execute pre and post scripts as root
PermissionsStartOnly=true
# Start main service
ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/usr/local/mysql57/mysqld.pid $MYSQLD_OPTS
# Sets open_files_limit
LimitNOFILE = 5000
Restart=on-failure
RestartPreventExitStatus=1
PrivateTmp=false
上面的配置好像还不能开机启动
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
赋予该文件执行权限
chmod +x /etc/init.d/mysql
chkconfig --add mysql
chkconfig --list
如果在2345级别是on应该就可以了,如果不行的话再加下面一条
chkconfig --level 2345 mysql on
systemctl start mysqld
systemctl status mysqld
看里面mysqld.service服务是active(running)的就可以了
一般没问题,如果启动失败有可能是启动了selinux,关闭即可
vi /etc/selinux/config
设置SELINUX=disabled
grep password /usr/local/mysql57/logs/error.log
会有下面的提示,但该密码为临时密码,需要修改。
2022-04-28T13:48:32.336948Z 1 [Note] A temporary password is generated for root@localhost: 8ie,p,b6jRBy
修改方法,修改为了123456
/usr/local/mysql57/bin/mysqladmin -uroot -p8ie,p,b6jRBy password 123456
mysql -uroot -p123456
use mysql
update user set host = '%' where user ='root';
flush privileges
exit
退出mysql
systemctl stop mysqld
systemctl start mysqld
如果远程使用Navicat连接mysql报10060错误,应该是防火墙的问题或网络问题。
firewall-cmd --permanent --add-port=3306/tcp
systemctl restart firewalld
如果嫌麻烦,直接关闭防火墙吧。
systemctl stop firewalld