Linux 下安装mysql 8.0.11(CentOS 7.4 系统)

时间:2022-04-16 07:56:46

CentOS 7 自带MariaDB (前mysql开发工程师开发的,因此与吗,mysql 有很多相似之处)

1、检查卸载自带的MariaDB

  rpm -qa|grep mariadb //查询出来已安装的mariadb

  rpm -e --nodeps 文件名 //卸载mariadb,文件名为上述命令查询出来的文件

2、查看是否已经安装了mysql

  rpm -qa | grep -i mysql

  查找mysql文件,使用rm -rf mysql文件路径删除

  find / -name mysql

  删除分散mysql文件

  find / -name mysql / # whereis mysql

  删除配置文档

  rm -rf /etc/my.cnf

  再次查找机器是否安装mysql

  rpm -qa|grep -i mysql

  

查看yum 库提供的mysql 资源

  yum list mysql*

  

3、安装mysql依赖包

  yum -y install openssl-devel

  yum install perl-JSON

  安装mysql 必要的依赖 libnuma.so.1 依赖需要安装 libnuma

 建议使用yum方式,免得缺少依赖
 用yum方式安装libnuma

  yum install numactl -y

  yum install libaio -y

  yum install perl -y

  yum -y install  libaio-devel

  yum -y install libaio.so.1 libgcc_s.so.1 libstdc++.so.6

  yum update libstdc++-4.4.7-4.el6.x86_64

  yum search libaio # 检索相关信息

  yum install libaio # 安装依赖包

  yum install net-tools

4、到mysql 官网下载通用包,也可下载原码编译,这图简单就直接下载编译好的通用包

用wget 下载

wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz #解压后是编译完的包

或wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.11-linux-glibc2.12-x86_64.tar   #解压后是rpm包

解压下载的压缩包到/usr/local/下的mysql目录内(mysql目录手动创建,mkdir mysql)

  tar -zxvf mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz -C /usr/local/mysql

Linux 下安装mysql 8.0.11(CentOS 7.4 系统)

  Linux 下安装mysql 8.0.11(CentOS 7.4 系统)

或者先解压在移动到指定目录

  tar -zxvf mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz     #解压

  mv /root/mysql-8.0.11-linux-glibc2.12-i686  /usr/local/mysql       #移动并重命名文件

5、tar包解压后(rpm 安装方式),在/usr/local/mysql下安装mysql,注意安装有先后,有依赖关系

rpm -ivh …common.rpm
rpm -ivh …libs.rpm
rpm -ivh …client.rpm
rpm -ivh …server.rpm
 
安装完成后会生成如下目录,用于存储mysql相关文件
 clip_image002
 
......rpm 安装参考:https://www.jb51.net/article/138787.htm
 
 6、tar.gz 解压的编译包安装
参考:https://blog.csdn.net/github_39533414/article/details/80144890#commentBox
https://www.linuxidc.com/Linux/2018-04/152039.htm
 
 6.1、在mysql根目录下新建一个文件夹data,用于存放数据

mkdir data

6.2、创建 root用户组和 root用户,一般系统已经存在root组和root用户,可以选择创建其他的用户和组

groupadd root

useradd -g root root

6.3、配置my.cnf文件

在/etc/目录下创建my.cnf 配置文件

  touch my.cnf

Linux 下安装mysql 8.0.11(CentOS 7.4 系统)

  其他参数根据情况来配置;

  my.cnf优化参考资料:https://www.cnblogs.com/langdashu/p/5889352.html

  https://www.cnblogs.com/mydriverc/p/8297144.html

  https://www.cnblogs.com/panwenbin-logs/p/8360703.html

  其中不存在的目录和日志文件需要先创建不然会报无法创建的权限错误

6.4.改变 mysql 目录权限

chown -R root:root /usr/local/mysql/

仅所属用户拥有权限

chmod 755 /usr/local/mysql -R

全部用户都有选项

chmod 777/usr/local/mysql -R

或者

chown -R mysql .

chgrp -R mysql .

注意最后有一点

7、初始化数据库

在mysql目录下

./bin/mysqld --initialize --user=root --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/

./bin/mysql_ssl_rsa_setup

Linux 下安装mysql 8.0.11(CentOS 7.4 系统)

生成的临时密码为 iTUlu+,Gz5;3

8、建立mysql 服务

添加到系统服务

cp -a ./support-files/mysql.server /etc/init.d/mysqld

或者

cp -v ./support-files/mysql.server /etc/init.d/

添加执行权限(选做)

chmod +x /etc/rc.d/init.d/mysqld

增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据。

chkconfig --add mysqld

检查服务是否生效

chkconfig  --list mysqld

或 chkconfig  --list  查看所有服务

Linux 下安装mysql 8.0.11(CentOS 7.4 系统)

Linux 下安装mysql 8.0.11(CentOS 7.4 系统)

9. 配置全局环境变量

编辑 / etc/profile 文件

vim /etc/profile

在 profile 文件底部添加如下两行配置,保存后退出

PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH

export PATH

Linux 下安装mysql 8.0.11(CentOS 7.4 系统)

注意:PATH这一定要根据自己的安装位置来配置,我之前就是这没注意直接参考其他人填写了个错误的地址"/data/mysql/bin:/data/mysql/lib:$PATH",之后一直报错

设置环境变量立即生效

source /etc/profile

10.启动MySQL服务

./mysqld --defaults-file=/etc/my.cnf --user=root & (可选执行)

systemctl start mysql.service (标准启动服务方式)

( 关闭方法为 service mysql.server stop
service mysql.server {start|stop|restart|reload|force-reload|status})

检查服务是否启动

inux上面:service mysql status查看是否启动,或者netstat -tlunp|grep 3306
windows上面:在“cmd”命令行里面输入“ netstat -an|find "3306",如果有这个说明开启了。

Linux 下安装mysql 8.0.11(CentOS 7.4 系统)

其中 mysql.server.service 服务为绿色状态,表示开启成功,如果不是就要去查看系统错误日志和服务的日志来排查了

11、登录mysql

  11.1、执行命令,登录mysql

  mysql -u root -p

输入 之前初始化得到的密码

  11.2进入mysql 之后,必须要进行初始密码的重置才能进行其他操作

  更新密码

  ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; #以默认密码认证插件来验证密码

  ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码'; #以指定的密码验证方式来验证密码

  配置文件my.cnf中 default_authentication_plugin 默认密码认证方式,因为当前有很多数据库工具和链接包都不支持“caching_sha2_password”,

  这为了方便改为之前的认证方式

  default_authentication_plugin=mysql_native_password

  

  在mysql 8.04 之前可以通过执行:SET PASSWORD=PASSWORD('[修改的密码]'); 来修改密码。

  但是MySQL8.0.4开始,这样是不行的。因为之前,MySQL的密码认证插件是“mysql_native_password”,mysql 8.04 之后使用的是“caching_sha2_password”。

  

  11.3、查看mysql 基本信息

  mysql 清屏命令 system clear;

  Linux 下安装mysql 8.0.11(CentOS 7.4 系统)

  Linux 下安装mysql 8.0.11(CentOS 7.4 系统)

  

11.4、创建允许远程管理的用户

  管理员root的host是localhost,代表仅限localhost登录访问。如果要允许开放其他ip登录,则需要添加新的host。如果要允许远程ip访问,可以直接修改成“%”,但这样会导致本地无法连接。

  因此最好新建允许远程连接的管理用户。

  创建用户:

    CREATE USER 'zw'@'%' IDENTIFIED WITH mysql_native_password BY '密码';

  #(需要注意:mysql8.04后加密方式修改了)
  #检查用户

    select user, host, plugin, authentication_string from user\G;

    #查询语句 \G 结尾表示格式化输出

  

  赋予权限

  #授权所有权限 
    GRANT ALL PRIVILEGES ON *.* TO 'zw'@'%';
  #授权基本的查询修改权限,按需求设置
    GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON *.* TO 'baseroot'@'%';

  grant all privileges on *.* to '用户'@'%' identified by '密码' with grant option;

  • all privileges:表示将所有权限授予给用户。也可指定具体的权限,如:SELECT、CREATE、DROP等。
  • on:表示这些权限对哪些数据库和表生效,格式:数据库名.表名,这里写“*.*”表示所有数据库,所有表。如果我要指定将权限应用到test库的user表中,可以这么写:test.user
  • to:将权限授予哪个用户。格式:”用户名”@”登录IP或域名”。%表示没有限制,在任何主机都可以登录。比如:”zw”@”192.168.0.%”,表示zw这个用户只能在192.168.0IP段登录
  • identified by:指定用户的登录密码
  • with grant option:表示允许用户将自己的权限授权给其它用户

  可以使用GRANT给用户添加权限,权限会自动叠加,不会覆盖之前授予的权限,比如你先给用户添加一个SELECT权限,后来又给用户添加了一个INSERT权限,那么该用户就同时拥有了SELECT和INSERT权限。

  用户详情的权限列表请参考MySQL官网说明:http://dev.mysql.com/doc/refman/5.7/en/privileges-provided.html

 

  #刷新权限:

  对用户做了权限变更之后,一定记得重新加载一下权限,将权限信息从内存中写入数据库。

  mysql> flush privileges;

  查看用户权限
    show grants for 'zw'@'%';

  

12、防火墙操作

  把 3306 端口添加进防火墙

  #检查端口占用情况

   netstat -lnp | grep 3306

  #查看是否开启防火墙

  systemctl status firewalld.serivce

  #开启防火墙

  systemctl start firewalld.serivce

  #查看防火墙已开放的端口号

  firewall-cmd --list-ports

  #添加端口进防火墙

  firewall-cmd --permanent --zone=public --add-port=3306/tcp

  #重新加载防火墙

  firewall-cmd --reload

  #重启防火墙服务(选做)

  systemctl restart firewalld.service

  Linux 下安装mysql 8.0.11(CentOS 7.4 系统)

  firewall-cmd --zone=public --add-port=80/tcp --permanent

  

  centos7中的防火墙改成了firewall,使用iptables无作用,开放端口的方法如下:

  firewall-cmd --zone=public --add-port=80/tcp --permanent

  返回success为成功

  

  命令含义:

  --zone #作用域

  --add-port=80/tcp #添加端口,格式为:端口/通讯协议

  --permanent #永久生效

  

  重启防火墙:

  systemctl restart firewalld.service

  

  关闭防火墙:

  systemctl stop firewalld.service

  查看监听(Listen)的端口

  netstat -lntp

  

  检查端口被哪个进程占用

  netstat -lnp|grep 8080

    

  查看已开发的端口

  firewall-cmd --list-ports

  

  根据端口号得到其占用的进程的详细信息

  netstat -tlnp|grep 80
  tcp        0      0 192.168.33.10:80            0.0.0.0:*                   LISTEN      5014/httpd
  tcp        0      0 0.0.0.0:48054               0.0.0.0:*                   LISTEN      5386/java

  

  一次性的清除占用80端口的程序

  lsof -i :80|grep -v "PID"|awk '{print "kill -9",$2}'|sh

  手工终止进程的运行

  kill 5014
  如果终止不了,可以强制终止
  kill -9 5014

  

  

  启动一个服务:systemctl start firewalld.service

  关闭一个服务:systemctl stop firewalld.service

  重启一个服务:systemctl restart firewalld.service

  显示一个服务的状态:systemctl status firewalld.service

  在开机时启用一个服务:systemctl enable firewalld.service

  在开机时禁用一个服务:systemctl disable firewalld.service

  查看服务是否开机启动:systemctl is-enabled firewalld.service

  查看已启动的服务列表:systemctl list-unit-files|grep enabled

  查看启动失败的服务列表:systemctl --failed

  

常用命令

firewall-cmd --state ##查看防火墙状态,是否是running
firewall-cmd --reload ##重新载入配置,比如添加规则之后,需要执行此命令
firewall-cmd --get-zones ##列出支持的zone
firewall-cmd --get-services ##列出支持的服务,在列表中的服务是放行的
firewall-cmd --query-service ftp ##查看ftp服务是否支持,返回yes或者no
firewall-cmd --add-service=ftp ##临时开放ftp服务
firewall-cmd --add-service=ftp --permanent ##永久开放ftp服务
firewall-cmd --remove-service=ftp --permanent ##永久移除ftp服务
firewall-cmd --add-port=80/tcp --permanent ##永久添加80端口
iptables -L -n ##查看规则,这个命令是和iptables的相同的
man firewall-cmd ##查看帮助

自此,所有的配置均完成!

参考:https://blog.csdn.net/github_39533414/article/details/80144890

https://blog.csdn.net/qq_38118019/article/details/80207918#commentBox

源码安装方式参考 https://blog.csdn.net/weixin_41782053/article/details/80571961