Linux( 基于Debian,Redhat的Linux:centos8,deepin )安装解压版 mysql8

MySQL8 安装包

检查glibc版本

[root@test-02 mysql]# rpm -qa | grep glibc
glibc-headers-2.17-326.el7_9.x86_64
glibc-2.17-326.el7_9.x86_64
glibc-devel-2.17-326.el7_9.x86_64
glibc-common-2.17-326.el7_9.x86_64

下载对应glibc版本的安装包
wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.27-linux-glibc2.17-x86_64.tar.xz
存放目录 : /opt/soft/mysql

1、MySQL安装

安装依赖

  • centos依赖
sudo yum -y install libaio 
sudo yum -y install ncurses-compat-libs
sudo yum -y install numactl
  • debian依赖
sudo apt-get install numactl

调整 libtinfo

centos7 / debian9 默认的是libtinfo.so.6,而 mysql 需要的是libtinfo.so.5,所以创建软连接 ;
libtinfo.so.5 软链接要和 libtinfo.so.6 位置相同。

  • centos
sudo whereis libtinfo.so.6
sudo ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5
  • debian
sudo whereis libtinfo.so.6
sudo ln -s /usr/lib/x86_64-linux-gnu/libtinfo.so.6 /usr/lib/x86_64-linux-gnu/libtinfo.so.5

解压,配置

sudo tar -xvf /opt/soft/mysql/mysql-8.0.22-linux-glibc2.12-x86_64.tar.xz
sudo mv /opt/soft/mysql/mysql-8.0.22-linux-glibc2.12-x86_64 /opt/soft/mysql/mysql8
# 在/etc/profile文件末尾添加
export PATH=$PATH:/opt/soft/mysql/mysql8/bin

创建用于运行MySQL的组和用户

sudo groupadd mysql # 创建MySQL组
sudo useradd -r -g mysql -s /bin/false mysql # 添加mysql用户
usermod -G mysql $USER # 把当前登录用户加入mysql组

创建导入导出操作安全目录

# 该目录用于使具有FILE权限的用户可以安全地执行导入导出操作
sudo mkdir /opt/soft/mysql/mysql8/mysql-files
# 创建数据目录
sudo mkdir /opt/soft/mysql/mysql8/data  
# 改变目录所属
sudo chown -R mysql:mysql /opt/soft/mysql
# 授权
sudo chmod -R 777 /opt/soft/mysql

mysql配置文件

# 创建MySQL服务启动需要用到的静态配置文件(固定名称)
sudo touch /etc/my.cnf
sudo chown root:root /etc/my.cnf
sudo chmod -R 777 /etc/my.cnf
  • /etc/my.cnf文件内容:
[mysqld]
# 设置3306端口
port=3306
  
# 设置mysql的安装目录
basedir=/opt/soft/mysql/mysql8
  
# 设置mysql数据库的数据的存放目录
datadir=/opt/soft/mysql/mysql8/data 
  
# soket文件,本地连接时使用,mysql默认位置
socket=/tmp/mysql.sock

# 日志
log-error=/opt/soft/mysql/mysql8/data/mysqld_error.log
 
# pid文件
pid-file=/opt/soft/mysql/mysql8/data/mysqld.pid
 
# 创建导入导出操作安全目录
secure_file_priv=/opt/soft/mysql/mysql8/mysql-files
 
# 允许最大连接数
max_connections=200
  
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
  
# 服务端使用的字符集默认为UTF8
character-set-server=utf8mb4
  
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
  
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
default-time-zone='+08:00' 
# 慢查询配置
slow_query_log=ON
slow_query_log_file =/opt/soft/mysql/mysql8/data/slow.log
# 单位时秒
long_query_time=2   

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
  
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8
# 这个配置可以放开,但必须和上面 [mysqld] 中 socket 属性一致
#socket=/tmp/mysql.sock

修改my.cnf权限

sudo chmod -R 555 /etc/my.cnf

修改 mysql.server 文件

# 修改$mysql_home/support-files/mysql.server
vim /opt/soft/mysql/mysql8/support-files/mysql.server
  • 修改mysql.server文件内容:
    mysql.server文件可修改basedir,datadir,my.cnf 等文件的位置;
    mysql.server中的 basedir,datadir 位置要和my.cnf 中的basedir,datadir 位置相同。
# basedir=
basedir=/opt/soft/mysql/mysql8
# datadir=
datadir=/opt/soft/mysql/mysql8/data

安装mysql(要记住密码)

sudo /opt/soft/mysql/mysql8/bin/mysqld  \
--defaults-file=/etc/my.cnf  \
--user=mysql \
--basedir=/opt/soft/mysql/mysql8 \
--datadir=/opt/soft/mysql/mysql8/data \
--initialize --console
## 密码可查看/opt/soft/mysql/mysql8/data/mysqld_error.log(my.cnf 中log-error属性值) 文件

启动mysql 服务

sudo chmod -R 777 /opt/soft/mysql
sudo /opt/soft/mysql/mysql8/support-files/mysql.server start
# 然后就可以登录了。(mysql -u root -p )

# 【注意】最好把这一步也完成了
sudo cp /opt/soft/mysql/mysql8/support-files/mysql.server  /etc/init.d/mysqld
sudo chmod 777 /etc/init.d/mysqld
# 重新启动
service mysqld restart

2、使用systemd管理MySQL8

# 在系统服务单元配置文件存放目下创建MySQL的服务单元配置文件
# mysqld.service 内容下边介绍
# 配置之后,此时我们已经可以通过systemctl工具手工管理MySQL服务
# systemctl {start|stop|restart|status|enable|disable|is-enabled} mysqld.service
sudo touch /usr/lib/systemd/system/mysqld.service
sudo chmod 644 /usr/lib/systemd/system/mysqld.service

sudo systemctl start mysqld.service # 开启服务
sudo systemctl status mysqld.service # 查看状态
  • 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]
# mysql 用户组和用户名
User=mysql
Group=mysql

# Have mysqld write its state to the systemd notify socket
Type=notify

# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0

# Start main service 配置MySQL启动命令
ExecStart=/opt/soft/mysql/mysql8/bin/mysqld $MYSQLD_OPTS 
# ExecStart=/opt/soft/mysql/mysql8/support-files/mysql.server $MYSQLD_OPTS 
# ExecStart=/opt/soft/mysql/mysql8/bin/mysqld --defaults-file=/etc/my.cnf $MYSQLD_OPTS 

# Use this to switch malloc implementation
EnvironmentFile=-/etc/sysconfig/mysql

# Sets open_files_limit
LimitNOFILE = 10000

Restart=on-failure

RestartPreventExitStatus=1

# Set environment variable MYSQLD_PARENT_PID. This is required for restart.
Environment=MYSQLD_PARENT_PID=1

PrivateTmp=false

3、修改root等操作

登录mysql : mysql -u root -p 
然后输入初始密码
alter user 'root'@'localhost'IDENTIFIED BY '123456'; -- 修改root 密码
grant all privileges on *.* to 'root'@'localhost'; -- 授于 root@localhost 所有权限

-- 设置远程登录
CREATE USER 'root'@'%' IDENTIFIED BY '123456';
grant all privileges on *.* to 'root'@'%';
flush privileges;
mysql一些操作
-- 查询所有用户
SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
-- 创建用户
create user 'test'@'%' identified by '123456';
-- 用户授权
grant all privileges on *.* to 'test'@'%' ;
-- 刷新权限
flush privileges;
-- 删除用户
drop user 'test'@'%';

4、可选配置( 这好像是 service 服务管理 mysql 的配置 )

sudo cp /opt/softs/mysql/mysql8/support-files/mysql.server  /etc/init.d/mysqld
sudo chmod 777 /etc/init.d/mysqld

chkconfig --list mysqld # 检查自启动项列表中没有mysqld
chkconfig --add mysqld 	# 如果没有就添加mysqld
chkconfig mysqld on 	# 设置开机启动
service mysqld start 	#启动测试

5、启动服务报错解决:

  • 错误1:
[root@tomcatCloud-2 system]# systemctl start mysqld.service
Job for mysqld.service failed because the control process exited with error code.
See "systemctl status mysqld.service" and "journalctl -xe" for details.
[root@tomcatCloud-2 system]# systemctl status mysqld.service
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Sun 2020-10-25 16:52:31 CST; 14s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 2239 ExecStart=/opt/softs/mysql/mysql8/bin/mysqld --defaults-file=/etc/my.cnf $MYSQLD_OPTS (code=exited, status=1/FAILURE)
 Main PID: 2239 (code=exited, status=1/FAILURE)
   Status: "Server startup in progress"
    Error: 2 (没有那个文件或目录)

1025 16:52:31 tomcatCloud-2 mysqld[2239]: 2020-10-25T08:52:31.794624Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
1025 16:52:31 tomcatCloud-2 mysqld[2239]: 2020-10-25T08:52:31.794724Z 1 [ERROR] [MY-012271] [InnoDB] The innodb_system data file 'ibdata1' must be writable
1025 16:52:31 tomcatCloud-2 mysqld[2239]: 2020-10-25T08:52:31.794763Z 1 [ERROR] [MY-012278] [InnoDB] The innodb_system data file 'ibdata1' must be writable
1025 16:52:31 tomcatCloud-2 mysqld[2239]: 2020-10-25T08:52:31.794801Z 1 [ERROR] [MY-010334] [Server] Failed to initialize DD Storage Engine
1025 16:52:31 tomcatCloud-2 mysqld[2239]: 2020-10-25T08:52:31.794921Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
1025 16:52:31 tomcatCloud-2 mysqld[2239]: 2020-10-25T08:52:31.794992Z 0 [ERROR] [MY-010119] [Server] Aborting
1025 16:52:31 tomcatCloud-2 mysqld[2239]: 2020-10-25T08:52:31.795446Z 0 [System] [MY-010910] [Server] /opt/softs/mysql/mysql8/bin/mysqld: Shutdown complete (mysqld 8.>
1025 16:52:31 tomcatCloud-2 systemd[1]: mysqld.service: Main process exited, code=exited, status=1/FAILURE
1025 16:52:31 tomcatCloud-2 systemd[1]: mysqld.service: Failed with result 'exit-code'.
1025 16:52:31 tomcatCloud-2 systemd[1]: Failed to start MySQL Server.
  • 解决方法 :

上面的错误点 :The innodb_system data file ‘ibdata1’ must be writable;
就是 文件ibdata1(在//opt/softs/mysql/mysql8/data目录里)没有写入权限

# 就是给ibdata1 添加权限
chmod -R 777 /opt/softs/mysql/mysql8 
  • 错误2:
[root@centos701 mysql]# mysql -u root -p 
Enter password: 
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
  • 解决方法 :
[root@centos701 mysql]# ln -s /opt/softs/mysql/mysql8/data/mysql.sock /tmp/mysql.sock
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值