centos8上安装mysql8
一,下载并解压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的更多相关文章
- Centos8上安装Mysql8.X
一.下载Mysql 下载地址:https://dev.mysql.com/downloads/mysql/ 二.将压缩包通过ftp软件服务器的目标位置:并解压 1.我的是放在:/root/softwa ...
- CentOS8上安装MySQL
没有选择Win10上安装MySQL,个人感觉比较傻瓜式.同时相对Win10操作系统,个人更熟悉Unix/Linux操作系统,所以选择在CentOS8上安装MySQL数据库. 还是熟悉的yum安装,前提 ...
- 在CentOS8 上安装Python3
从centos开始入手学习linux.感觉安装python很费劲,之前centos6因为python2和python3兼容的问题一直无法彻底解决,python3一旦安装影响到python2,cento ...
- centos7上安装mysql8(上)
1.删除系统现存的mysql rpm -pa | grep mysql 2.卸载mysql组件 yum remove mysql-xxx-xxx- 3.删除mysql的配置文件,卸载不会自动删除配置文 ...
- Linux(CentOS-8)安装MySQL8.0.11
CentOS安装MySQL8.0.11 总的思路就是:安装MySQL,编写配置文件,配置环境变量,成功开启服务,登陆并修改ROOT密码 开启远程访问的思路就是:授权用户所有IP都可以访问,系统的数据库 ...
- centos7上安装mysql8(下)
1.修改root密码 MySQL8和5的密码加密方式不同,mysql_native_password是5的加密方式.mysql已经将之前的mysql_native_password认证,修改成了cac ...
- win10上安装mysql8(installer方式)并创建用户开启远程连接
1.进去mysql官网,下载mysql安装工具: 2.运行下载的mysql-installer-community-8.0.17.0.msi,一次往下执行就好了,以下是几个注意的点: 后面还有个地方就 ...
- [linux]centos7.4上安装MySQL-8.0.11【完美安装】
版本声明 centos7.4 MySQL-8.0.11 1.我用的阿里云的虚拟主机,刚从windows换到linux,需要装下常用工具 #安装下sz rz常用到上传下载的命令 yum install ...
- 在 Ubuntu 18.0-10上安装 MySQL8
直接使用apt install mysql-server安装,那么恭喜你踩坑. sudo apt install mysql-server默认会安装MySQL 5.7,将会出现一些莫名的问题,例如:安 ...
随机推荐
- 本周 GitHub 速览:自动化当道,破密、爬虫各凭本事
作者:HelloGitHub-小鱼干 摘要:安全门外汉,如何在不知道密钥或密码的情况下,破解哈希得到原文,Ciphey 会告诉你当中的密码.说到 auto 智能爬虫会基于上一次的爬虫经历进一步学习以获 ...
- docker部署rockermq集群(docker-compose版本)
此处采用docker-compose部署 rockermq主主集群模式 创建相关文件夹 此处创建的文件一一对应docker-compose.yml文件中的映射文件夹,酌情创建,主要需要创建配置文件夹. ...
- Java基础一篇过(三)I/O流总结
一.啥是I/O 概念:I/O为输入,输出流的统称,流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象. 本质:本质是数据传输,即数据在两设备间的传输称为流,根据数据传输特性将流抽象为各 ...
- MySQL分区 (分区介绍与实际使用)
分区介绍: 一.什么是分区? 所谓分区,就是将一个表分成多个区块进行操作和保存,从而降低每次操作的数据,提高性能.而对于应用来说则是透明的,从逻辑上看只有一张表,但在物理上这个表可能是由多个物理分区组 ...
- 浅析Kubernrtes服务类型(Service Types)
先上图 在Kubernetes集群中,service通过标签选择器选着对应的pod,然后对请求进行转发,看个动画,能直接了当体会到便签选择器 pod,endpoints,service三者关系 1.举 ...
- scala 传值调用,传名调用
Scala的解释器在解析函数参数(function arguments)时有两种方式: 传值调用(call-by-value):先计算参数表达式的值,再应用到函数内部: 传名调用(call-by-na ...
- Emgu.CV怎么加载Bitmap
EmguCV 在4.0.1版本之后没办法用Bitmap创建Image了. 我给大家说下 EmguCV怎么加载Bitmap 下边是 EmguCV 官方文档写的,意思是从4.0.1以后的版本不能直接Bit ...
- 029 01 Android 零基础入门 01 Java基础语法 03 Java运算符 09 逻辑“非”运算符
029 01 Android 零基础入门 01 Java基础语法 03 Java运算符 09 逻辑"非"运算符 本文知识点:Java中的逻辑"非"运算符 逻辑& ...
- 07 C语言常量
常量的定义 常量是指固定的值,固定值在程序执行期间不会改变.这些固定值,又叫做字面量. 常量可以是任意的基本数据类型,比如整数常量.浮点常量.字符常量,或字符串字面值,也有枚举常量. 不要搞得太复杂, ...
- HTML & CSS & JavaScript 从一个表格到一个灰阶颜色表 04
工具1:HBuilder X 1.9.9.20190522 工具2:火狐浏览器 67.0.4 (64 位) 目前,我们已经将一些行和列插入到表格中,并设置单元格的背景颜色,显示 RGB 值等. 例 7 ...