文件下载
https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.39-linux-glibc2.12-x86_64.tar
选择合适系统版本
下载后解压
tar -xvf mysql-8.0.39-linux-glibc2.12-x86_64.tar
解压后里面有三个文件夹
使用mysql-8.0.39-linux-glibc2.12-x86_64.tar.xz即可,解压mysql-8.0.39-linux-glibc2.12-x86_64.tar.xz
tar -xvf mysql-8.0.39-linux-glibc2.12-x86_64.tar.xz
改名为 mysql-8.0.39
mv mysql-8.0.39-linux-glibc2.12-x86_64 mysql-8.0.39
安装mysql
进入文件夹
cd mysql-8.0.39
配置文件
新建配置文件
sudo vim /etc/my.cnf
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
#
socket=/home/moorgen/mysql-8.0.39/sock/mysql.sock
#
[mysqld]
# #skip-name-resolve
# #设置3306端口
port = 3306
#
socket=/home/moorgen/mysql-8.0.39/sock/mysql.sock
#
# # 设置mysql的安装目录
basedir=/home/moorgen/mysql-8.0.39
#
# # 设置mysql数据库的数据的存放目录
datadir=/home/moorgen/mysql-8.0.39/data
#
# # 允许最大连接数
max_connections=200
#
# # 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
#
# # 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#
max_allowed_packet=16M# 如果初始化时候设置的是1,这里必须配置是1,否则启动错误
lower_case_table_names=1
初始化mysql
./bin/mysqld --initialize --user=moorgen --basedir=/home/moorgen/mysql-8.0.39/ --datadir=/home/moorgen/mysql-8.0.39/data/ --lower-case-table-names=1
指定安装目录数据目录和表忽略大小写,记录初始密码.
设置环境变量
vim /etc/profile
export PATH=$PATH:/home/moorgen/mysql-8.0.39/bin
source /etc/profile
启动mysql
./support-files/mysql.server start
可能报错:
mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
解决:
find /usr/lib* -name "libtinfo*"
sudo ln -s /usr/lib64/libtinfo.so.6 /usr/lib64/libtinfo.so.5
初始密码,设置远程账号
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';CREATE USER 'moorgen'@'%' IDENTIFIED BY '123456';GRANT ALL PRIVILEGES ON *.* TO 'moorgen'@'%' WITH GRANT OPTION;FLUSH PRIVILEGES;
添加自启动
vim /etc/systemd/system/mysql.service
- /etc/systemd/system/ 是推荐的位置,但你也可以在以下目录下放置自启动服务文件:
- /lib/systemd/system/:通常用于系统级服务文件,系统软件包安装的服务通常放在这里。一般不建议手动添加或修改。
- /usr/lib/systemd/system/:与 /lib/systemd/system/ 类似,主要用于由发行版提供的服务。
内容
[Unit]
Description=Moorgen mysql service
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target[Service]
User=moorgen
Group=moorgen
Type=forking
ExecStart=/home/moorgen/mysql-8.0.39/support-files/mysql.server start
ExecReload=/home/moorgen/mysql-8.0.39/support-files/mysql.server restart
ExecStop=/home/moorgen/mysql-8.0.39/support-files/mysql.server stop
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true[Install]
WantedBy=multi-user.target
常用命令
systemctl daemon-reload
systemctl enable mysql.service
systemctl status mysql.service (查看服务)
systemctl stop mysql.service (停止服务)
systemctl start mysql.service (启动服务)
systemctl status mysql.service (查看服务)
systemctl start mysql.service 执行时候报错:
mysql.service: Failed at step EXEC spawning /home/moorgen/mysql-8.0.39/support-files/mysql.server: Permission denied!
SELinux 设置(如果启用): 如果你的系统启用了 SELinux,可能需要设置 SELinux 上下文,以允许该文件执行。可以临时禁用 SELinux 进行测试:
sudo setenforce 0
解决方案:
1.配置合适的 SELinux 策略,这个可能比较麻烦,没有做详细研究;
2.永久设置 SELinux 为宽松模式
vim /etc/selinux/config
SELINUX=permissive
设置防火墙
firewall-cmd --list-portsfirewall-cmd --zone=public --add-port=3306/tcp --permanentfirewall-cmd --reload