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

  

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

  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

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

  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

生成的临时密码为 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  查看所有服务

9. 配置全局环境变量

编辑 / etc/profile 文件

vim /etc/profile

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

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

export PATH

注意: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",如果有这个说明开启了。

其中 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;

  

  

  

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

  

  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

Linux 下安装mysql 8.0.11(CentOS 7.4 系统)的更多相关文章

  1. Windows系统下安装MySQL 8.0.11数据库

    MySQL数据库是常用的数据库之一,而且该数据库开源免费,所以很多公司在使用.本文记录如何在Windows系统下安装MySQL数据库,本次安装的版本号为8.0.11,这个版本是当前的最新版本,据宣传, ...

  2. Linux下安装mysql(2) 及常见问题解决(CentOS)

    上一篇讲了基本的安装,这篇姑且算作进阶吧 链接Linux下安装mysql(1) 1.准备好mysql的rpm安装包 2.解压并进入usr/local/mysql 3.先执行useradd mysql( ...

  3. Linux下安装mysql(1)(CentOS)

    标题是(1)也就是说这次是基础安装,这种方式安装,没有组的创建,权限管理,配置文件更改等,仅仅是最基本的安装,适合第一次在linux上安装mysql的新手 1.准备好安装包(Linux-Generic ...

  4. CentOS 7 下安装 MySQL 8.0

    前言 本篇文章主要介绍在 CentOS 7 环境下安装 MySQL 8.0. 正文 1. 配置yum源 首先在 https://dev.mysql.com/downloads/repo/yum/ 找到 ...

  5. Linux下安装mysql教程

    Linux下安装mysql  MySQL官网:https://dev.mysql.com/downloads/mysql/ 到mysql官网下载mysql编译好的二进制安装包,在下载页面Select ...

  6. Linux下安装Python3.3.0

    Linux下安装Python3.3.0_路易_新浪博客 Linux下安装Python3.3.0 (2013-01-08 11:45:37)

  7. 【云服务器部署】---Linux下安装MySQL

    [云服务器部署]---Linux下安装MySQL 有关如何阿里云ECS建网站,推荐一片文章,我是是通过这篇文章安装tomcat和jdk的 网址:阿里云ECS建网站(建站)超详细全套完整图文教程! 注意 ...

  8. linux下安装mysql问题总结(一)mysqld_safe mysqld from pid file /usr/local/mysql/data/mysql.pid ended

    linux下安装mysql数据库 linux版本:CentOS release 6.8 (Final) mysql版本:mysql-5.7.16-linux-glibc2.5-x86_64.tar.g ...

  9. Linux 下安装mysql 5.7

    Linux 下安装mysql 5.7 本人首次安装时按照菜鸟教程的步骤一步一步来的,结果意外的是 装成5.6了,而且各种无厘头的问题,例如无法启动... 本文参照 大佬:‘这个名字想了很久~’ 的&l ...

随机推荐

  1. [C/C++11]_[初级]_[std::bind介绍和使用]

    场景 1.C++11 引入了std::function 对象, 这个对象可以通过std::bind封装所有的函数, 并通过代理调用这个std::function的方式调用这个函数. 比如通过统一的方式 ...

  2. P3703 [SDOI2017]树点涂色

    P3703 [SDOI2017]树点涂色 链接 分析: 首先对于询问,感觉是线段树维护dfs序,每个点记录到根的颜色个数.第二问差分,第三问区间取max. 那么考虑修改,每次将一个点的颜色变成和父节点 ...

  3. Kali2.0可用国内源更新sources.list

    vim /etc/apt/sources.list #中科大 deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contri ...

  4. cocos creator踩坑日记

    踩坑一 问题:项目在构建成Web Mobile后运行在浏览器和微信中,点击页面任何地方都会导致自动全屏 解决:在构建之后的main.js中,去掉 cc.view.enableAutoFullScree ...

  5. k8s常用命令记录

    目录 kubectl常用命令 kubectl get pod -n dev 查看日志 查看pod详情 删除pod 删除job 进入pod里面 查看namespace 创建namespace 删除nam ...

  6. let与var区别

    <!DOCTYPE html> <html> <head> <title>let与var区别</title> <meta charse ...

  7. java学习(五)Number类、Math类

    Number类 顾名思义嘛,搞数字的,以前也用到过,就是相当于内置了一堆数字的类嘛,用哪种类型的就引用下这个包就好了呗 Integer.Long.Byte.Double.Float.Short都是Nu ...

  8. 【SIKIA计划】_05_Unity5.3开发2D游戏笔记

    一.界面基本操作 01.Project基本分类[Audios]音效[Material]材质[Prefabs]预制[Scenes]场景[Scripts]脚本[Sprites]精灵 02.Project丶 ...

  9. 基于Vue的简单通用分页组件

    分页组件是每一个系统里必不可少的一个组件,分页组件分为两部分.第一部分是模版部分,用于显示当前分页组件的状态,例如正在获取数据.没有数据.没有下一页等等:第二部分是分页数据对象,用于封装一个分页组件的 ...

  10. arp与rarp