一,下载并解压mysql8

1,mysql官网

https://www.mysql.com/

2,下载到source目录

[root@yjweb source]# wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.19-linux-glibc2.12-x86_64.tar

3,解压:

[root@yjweb source]# tar -xvf mysql-8.0.19-linux-glibc2.12-x86_64.tar
mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz
mysql-test-8.0.19-linux-glibc2.12-x86_64.tar.xz
mysql-router-8.0.19-linux-glibc2.12-x86_64.tar.xz

[root@yjweb source]# xz -d mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz
xz: mysql-8.0.19-linux-glibc2.12-x86_64.tar: File exists

[root@yjweb source]# mv mysql-8.0.19-linux-glibc2.12-x86_64.tar mysql-8.0.19-linux-glibc2.12-x86_64.orig.tar
[root@yjweb source]# xz -d mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz
[root@yjweb source]# tar -xvf mysql-8.0.19-linux-glibc2.12-x86_64.tar

说明: 可以看到第一次用xz -d 解压时,因为解压出的文件与我们一开始下载的压缩包文件同名,会报错:File exists

所以用mv命令把原始文件改名,从.tar改名为   .orig.tar

看来mysql官方在打包时没想到这个问题

说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

对应的源码可以访问这里获取: https://github.com/liuhongdi/

说明:作者:刘宏缔 邮箱: 371125307@qq.com

二,移动mysql8到目标位置

[root@yjweb source]# mv mysql-8.0.19-linux-glibc2.12-x86_64 /usr/local/soft/mysql

三,创建mysql用户组和用户,用于运行mysql

[root@yjweb source]# groupadd mysql
[root@yjweb source]# useradd -g mysql -s /sbin/nologin -M mysql

说明:

-M, --no-create-home
Do no create the user's home directory, even if the system wide setting from /etc/login.defs (CREATE_HOME) is set to yes.

这个参数的含义是:不创建新用户的home目录

说明:在linux下如果想找需要使用的参数,随时用man

[root@yjweb source]# man useradd

四,创建mysql的data等目录,用于存放数据等

[root@yjweb source]# mkdir /data/mysql
[root@yjweb source]# mkdir /data/mysql/data
[root@yjweb source]# chown mysql.mysql /data/mysql/data
[root@yjweb ~]# cd /data/mysql
[root@yjweb mysql]# mkdir log
[root@yjweb mysql]# chown mysql.mysql log
[root@yjweb mysql]# mkdir binlog
[root@yjweb mysql]# chown mysql.mysql binlog
[root@yjweb mysql]# mkdir var
[root@yjweb mysql]# chown mysql.mysql var
[root@yjweb mysql]# mkdir tmp
[root@yjweb mysql]# chown mysql.mysql tmp

对/data/mysql下面五个目录的说明:

data    存放mysql的数据

log      存放mysql的错误日志和慢查询日志

binglog  存放mysql的二进制日志

var       存放mysql的sock 和 pid

tmp     mysql使用的临时目录

五,初始化数据库:

1,执行命令

[root@yjweb source]# /usr/local/soft/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/soft/mysql/ --datadir=/data/mysql/data/
2020-03-05T08:51:16.019096Z 0 [System] [MY-013169] [Server] /usr/local/soft/mysql/bin/mysqld (mysqld 8.0.19) initializing of server in progress as process 31730
2020-03-05T08:51:18.107879Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: Tz8OPgiskv#C

注意:返回信息中那个给root的临时密码,保存好,接下来要用

2,查看我们指定的数据目录,看是否已有数据写入:

[sysop@yjweb ~]$ ls /data/mysql/data/

六,编辑mysql的配置文件

[root@yjweb source]# vi /etc/my.cnf

内容:

[client]
port = 3306
socket = /data/mysql/var/mysql.sock [mysqld] server-id = 1
skip_name_resolve = 1
basedir=/usr/local/soft/mysql
port = 3306 datadir=/data/mysql/data
socket=/data/mysql/var/mysql.sock
log-bin = /data/mysql/binlog/mysql-bin
pid-file=/data/mysql/var/mysqld.pid
user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
init_connect='SET NAMES utf8mb4'
max_connections = 400
max_allowed_packet = 128M interactive_timeout = 1800
wait_timeout = 1800 tmp_table_size = 134217728
max_heap_table_size = 134217728 default_authentication_plugin=mysql_native_password
innodb-file-per-table = 1

log-queries-not-using-indexes  = 1
slow-query-log = 1
slow-query-log-file = /data/mysql/log/mysql-slow.log
long_query_time = 1
[mysqld_safe] 
log-error=/data/mysql/log/mysqld.log

七,从命令行临时启动mysql

[root@yjweb source]# /usr/local/soft/mysql/bin/mysqld_safe
2020-03-05T09:15:19.193649Z mysqld_safe error: log-error set to '/data/mysql/log/mysqld.log', however file don't exists. Create writable for user 'mysql'.
[root@yjweb source]# touch /data/mysql/log/mysqld.log
[root@yjweb source]# chown mysql.mysql /data/mysql/log/mysqld.log
[root@yjweb source]# /usr/local/soft/mysql/bin/mysqld_safe

说明:把启动时提示找不到的错误日志文件创建上,

再次启动即可

说明:这样启动后会占用一个控制台,另开一个控制台访问即可

操作完成后把进程kill掉

例:

 [root@os3-383-24630 ~]# cat /data/mysql/var/mysqld.pid | xargs kill

说明:后面我们会配置mysql做为daemon启动的启动文件

八,从客户端登录进去修改密码

[root@yjweb mysql]# /usr/local/soft/mysql/bin/mysql -u root -p
Enter password:

说明:输入我们初始化数据库时系统给出的那个临时密码

mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'rootdemopass';
Query OK, 0 rows affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.01 sec)

说明:我们第一次登录后命令不能执行,mysql提示我们要先修改密码

修改密码后命令可以执行

说明:这个密码仅供演示使用,大家应该设计一个安全不易被穷举的密码

九,编辑一个mysql的启动文件

[root@yjweb var]# vi /usr/local/soft/mysql/support-files/mysql.server

根据我们上面所做的操作,配置以下两行内容

basedir=/usr/local/soft/mysql
datadir=/data/mysql/data

测试用启动文件来启动mysql服务

[root@yjweb var]# chmod 740 /usr/local/soft/mysql/support-files/mysql.server
[root@yjweb var]# /usr/local/soft/mysql/support-files/mysql.server start
Starting MySQL [ OK ]

十,如何查看已安装的mysql的版本?

1,查看mysql客户端的版本

[root@yjweb mysql]# /usr/local/soft/mysql/bin/mysql -V
/usr/local/soft/mysql/bin/mysql Ver 8.0.19 for linux-glibc2.12 on x86_64 (MySQL Community Server - GPL)

2,查看mysql服务端的版本

[root@yjweb mysql]# /usr/local/soft/mysql/bin/mysqld -V
/usr/local/soft/mysql/bin/mysqld Ver 8.0.19 for linux-glibc2.12 on x86_64 (MySQL Community Server - GPL)

十一,使用systemctl 管理mysql服务

1,生成service文件

[root@yjweb ~]# vim /usr/lib/systemd/system/mysqld.service

内容:

[Unit]

Description=MySQL Server
After=network.target
After=syslog.target [Service] User=mysql
Group=mysql
Type=forking PermissionsStartOnly=true ExecStart= /usr/local/soft/mysql/support-files/mysql.server start
ExecStop= /usr/local/soft/mysql/support-files/mysql.server stop
ExecReload= /usr/local/soft/mysql/support-files/mysql.server restart LimitNOFILE = 5000
[Install]
WantedBy=multi-user.target

2,测试运行情况:

[root@yjweb ~]# systemctl daemon-reload
[root@yjweb ~]# systemctl start mysqld
[root@yjweb ~]# systemctl stop mysqld

说明:如果service文件有新增或修改,需要做一次daemon-reload

十二,新建dbweb账号,使可以从127.0.0.1访问

说明:生产环境中,更多的是从其他服务器上到数据库服务器的访问,是基于ip地址的访问:

mysql> create user 'dbweb'@'127.0.0.1' identified by 'webdemopass';

Query OK, 0 rows affected (0.00 sec)

mysql> grant select,insert,update,delete on demobase.* to dbweb@127.0.0.1;

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

十三,mysql sever在生产环境中的账号配置

原则上应该为每个站创建一个独立的账号:

例如:dbweb  这个账号: 是用来供前台使用

dbadm  这个账号: 用来供后台使用

dbapi    这个账号: 用来供接口站使用

这个做法的作用: 不使用统一的账号,便于权限的分配

可以实现权限的隔离,更安全,

在遇到问题时也更容易排查

说明:mysql的一个安全管理原则:

权限分配时,不要随便就分配all privileges权限,

基本上除管理员之外没有账号需要这么高的权限,

select,insert,update,delete在生产环境中已经足够了

十四,查看本地centos的版本

[webop@yjweb ~]$ cat /etc/redhat-release
CentOS Linux release 8.0.1905 (Core)

centos8上安装mysql8的更多相关文章

  1. Centos8上安装Mysql8.X

    一.下载Mysql 下载地址:https://dev.mysql.com/downloads/mysql/ 二.将压缩包通过ftp软件服务器的目标位置:并解压 1.我的是放在:/root/softwa ...

  2. CentOS8上安装MySQL

    没有选择Win10上安装MySQL,个人感觉比较傻瓜式.同时相对Win10操作系统,个人更熟悉Unix/Linux操作系统,所以选择在CentOS8上安装MySQL数据库. 还是熟悉的yum安装,前提 ...

  3. 在CentOS8 上安装Python3

    从centos开始入手学习linux.感觉安装python很费劲,之前centos6因为python2和python3兼容的问题一直无法彻底解决,python3一旦安装影响到python2,cento ...

  4. centos7上安装mysql8(上)

    1.删除系统现存的mysql rpm -pa | grep mysql 2.卸载mysql组件 yum remove mysql-xxx-xxx- 3.删除mysql的配置文件,卸载不会自动删除配置文 ...

  5. Linux(CentOS-8)安装MySQL8.0.11

    CentOS安装MySQL8.0.11 总的思路就是:安装MySQL,编写配置文件,配置环境变量,成功开启服务,登陆并修改ROOT密码 开启远程访问的思路就是:授权用户所有IP都可以访问,系统的数据库 ...

  6. centos7上安装mysql8(下)

    1.修改root密码 MySQL8和5的密码加密方式不同,mysql_native_password是5的加密方式.mysql已经将之前的mysql_native_password认证,修改成了cac ...

  7. win10上安装mysql8(installer方式)并创建用户开启远程连接

    1.进去mysql官网,下载mysql安装工具: 2.运行下载的mysql-installer-community-8.0.17.0.msi,一次往下执行就好了,以下是几个注意的点: 后面还有个地方就 ...

  8. [linux]centos7.4上安装MySQL-8.0.11【完美安装】

    版本声明 centos7.4 MySQL-8.0.11 1.我用的阿里云的虚拟主机,刚从windows换到linux,需要装下常用工具 #安装下sz rz常用到上传下载的命令 yum install ...

  9. 在 Ubuntu 18.0-10上安装 MySQL8

    直接使用apt install mysql-server安装,那么恭喜你踩坑. sudo apt install mysql-server默认会安装MySQL 5.7,将会出现一些莫名的问题,例如:安 ...

随机推荐

  1. 本周 GitHub 速览:自动化当道,破密、爬虫各凭本事

    作者:HelloGitHub-小鱼干 摘要:安全门外汉,如何在不知道密钥或密码的情况下,破解哈希得到原文,Ciphey 会告诉你当中的密码.说到 auto 智能爬虫会基于上一次的爬虫经历进一步学习以获 ...

  2. docker部署rockermq集群(docker-compose版本)

    此处采用docker-compose部署 rockermq主主集群模式 创建相关文件夹 此处创建的文件一一对应docker-compose.yml文件中的映射文件夹,酌情创建,主要需要创建配置文件夹. ...

  3. Java基础一篇过(三)I/O流总结

    一.啥是I/O 概念:I/O为输入,输出流的统称,流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象. 本质:本质是数据传输,即数据在两设备间的传输称为流,根据数据传输特性将流抽象为各 ...

  4. MySQL分区 (分区介绍与实际使用)

    分区介绍: 一.什么是分区? 所谓分区,就是将一个表分成多个区块进行操作和保存,从而降低每次操作的数据,提高性能.而对于应用来说则是透明的,从逻辑上看只有一张表,但在物理上这个表可能是由多个物理分区组 ...

  5. 浅析Kubernrtes服务类型(Service Types)

    先上图 在Kubernetes集群中,service通过标签选择器选着对应的pod,然后对请求进行转发,看个动画,能直接了当体会到便签选择器 pod,endpoints,service三者关系 1.举 ...

  6. scala 传值调用,传名调用

    Scala的解释器在解析函数参数(function arguments)时有两种方式: 传值调用(call-by-value):先计算参数表达式的值,再应用到函数内部: 传名调用(call-by-na ...

  7. Emgu.CV怎么加载Bitmap

    EmguCV 在4.0.1版本之后没办法用Bitmap创建Image了. 我给大家说下 EmguCV怎么加载Bitmap 下边是 EmguCV 官方文档写的,意思是从4.0.1以后的版本不能直接Bit ...

  8. 029 01 Android 零基础入门 01 Java基础语法 03 Java运算符 09 逻辑“非”运算符

    029 01 Android 零基础入门 01 Java基础语法 03 Java运算符 09 逻辑"非"运算符 本文知识点:Java中的逻辑"非"运算符 逻辑& ...

  9. 07 C语言常量

    常量的定义 常量是指固定的值,固定值在程序执行期间不会改变.这些固定值,又叫做字面量. 常量可以是任意的基本数据类型,比如整数常量.浮点常量.字符常量,或字符串字面值,也有枚举常量. 不要搞得太复杂, ...

  10. HTML & CSS & JavaScript 从一个表格到一个灰阶颜色表 04

    工具1:HBuilder X 1.9.9.20190522 工具2:火狐浏览器 67.0.4 (64 位) 目前,我们已经将一些行和列插入到表格中,并设置单元格的背景颜色,显示 RGB 值等. 例 7 ...