mysql 8.0 集群_集群架构03·MySQL初识,mysql8.0环境安装,mysql多实例

本文详细介绍了MySQL从5.5到5.7各版本的改进,以及如何在Linux环境中进行安装、配置和管理MySQL。内容包括:选择合适的版本、安装步骤、配置文件修改、数据目录设置、用户权限管理、启动与停止数据库、端口检查、环境变量设置、密码重置、多实例配置等。同时,文章提到了一些常见问题及解决办法,如错误日志、防火墙设置等。
摘要由CSDN通过智能技术生成

官方网址

https://dev.mysql.com/downloads/mysql/

社区版本分析

MySQL5.5:默认存储引擎改为InnoDB,提高性能和可扩展性,增加半同步复制

MySQL5.6:提高InnoDB性能,支持延迟复制

MySQL5.7:提升性能,增强复制功能

https://www.jianshu.com/p/6f2cb7874abd MySQL 5.6 ,5.7 ,8.0    在安装部署的异同

DBA干点啥子?????

初级:各版本、各平台安装搭建、升级

中级:体系结构原理、基础管理(启动关闭、初始化配置文件管理、多实例管理、用户权限管理、基本SQL(增删改查))、

日志管理、备份与恢复、主从复制(构建、状态监控)

高级:高可用(MGR、InnoDB Cluster)、高性能(优化)

常规安装MySQL

1、检查版本和系统的适配度

2、环境介绍,将软件包传输到/root目录下,解压到/usr/local官方推荐安装路径

[root@localhost ~]# cat /etc/redhat-release

CentOS Linux release 7.4.1708 (Core)

[root@localhost ~]# uname -a

Linux localhost.localdomain 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

[root@localhost ~]# ls -sh |grep mysql

376M mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz

[root@localhost ~]# mv /root/mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz /usr/local/

[root@localhost ~]# cd /usr/local/

[root@localhost local]# tar -xvf mysql-8.0.13-linux-glibc2.12-x86_us:m64.tar.xz

[root@localhost local]# mv mysql-8.0.13-linux-glibc2.12-x86_64 mysql

[root@localhost local]# du -h --max-depth=1 #解压之后文件大小为2G

2.0G./mysql

#MySQL底层是C和C++写的

3、新建用户,创建数据目录,修改属性,初始化MySQL

[root@localhost mysql]# tree -L 1 -d

├── bin #可执行文件目录

├── docs

├── include

├── lib

├── man

├── share

└── support-files

[root@localhost mysql]# mkdir data

#support-files中的mysql.server,datadir=/usr/local/mysql/data ,所以才默认安装到/usr/local

[root@localhost mysql]# groupadd mysql   #添加用户组mysql

[root@localhost mysql]# useradd mysql -g mysql    #添加用户mysql

[root@localhost local]# cd mysql

[root@localhost mysql]# chown -R mysql:mysql data #增加mysql用户,修改属性

[root@localhost mysql]# bin/mysqld --initialize --user=mysql --datadir /usr/local/mysql/data/

#数据库初始化,指定数据目录位置 9zyH:/491o5Z

2019-10-12T02:14:19.114262Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: R=lxprgpD0oj #临时密码,登录之后会让你修改密码

2019-10-12T02:14:20.505592Z 0 [System] [MY-013170] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.13) initializing of server has completed #初始化已经完成

#如果报错显示让你安装一个libaio包,yum一个就OK

#初始化数据库,指定用户和数据目录,返回一个临时密码,如果忘记初识密码,重新初始化,报错是因为你没有删除data目录里下的文件,初始化后data目录会从空目录增加很多目录

4、启动数据库

[root@localhost data]# cp ../support-files/mysql.server /etc/init.d/

[root@localhost data]# vim /etc/my.cnf

#系统默认数据库文件,marDB,我们不需要,删除就可以,否则就会报错

[root@localhost data]# /etc/init.d/mysql.server start #卧槽,居然真的报错

Starting MySQL.2019-10-12T02:24:24.836889Z mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.

ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid).

[root@localhost data]# cp /etc/my.cnf{,.bak} #习惯性的备份一下,说不定以后会用到

[root@localhost data]# rm -fr /etc/my.cnf

[root@localhost data]# /etc/init.d/mysql.server start #重新启动,成功!!!

Starting MySQL.Logging to '/usr/local/mysql/data/localhost.localdomain.err'.. SUCCESS!

5、查看端口和进程,添加环境变量

[root@localhost data]# ps -ef |grep mysql

[root@localhost data]# netstat -lnatup|grep mysqld #端口查看一下 3306和33060  ,33060mysqlx的一个服务

tcp6 0 0 :::33060 :::* LISTEN 1808/mysqld

tcp6 0 0 :::3306 :::* LISTEN 1808/mysqld

[root@localhost bin]# cd

[root@localhost ~]# vi .bash_profile

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

#把命令路径加入到PATH 。如果命令位置变了,重新添加,基础的基础

[root@localhost ~]# source .bash_profile #修改之后加载一下

6、测试,重置密码,显示数据库

5.7 修改密码:set password=password('mysql');

8.0修改密码:alter user user() identified by 'mysql';

[root@localhost ~]# mysqladmin -uroot -p password #命令交互式修改管理员密码

Enter password:

New password:

Confirm new password:

Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

[root@localhost ~]# mysql -u root -p

Enter password: #把初始化的那个密码写到这里就OK

mysql> show databases;

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. #报错提示让你修改密码

mysql> alter user user() identified by 'mysql';   #突然觉得英语学得好的人,学SQL肯定快,因为SQL语句就是用英语的几个

Query OK, 0 rows affected (0.11 sec) #修改密码成功

mysql> show databases; #用一下,试一试

| Database |

+--------------------+

| information_schema |

| mysql |

| performance_schema |

| sys |

#修改配 置文件之前先把数据库关了

systemctl start/stop/restart/status mysqld

7、本地管理员用户密码忘记

版本8重置密码流程:在配置文件中添加免密码登录,登录系统,修改系统库中user表的密码数据,

删除配置文件的密码登录,重启服务,登录即可

实践

在【mysqld】模块添加:skip-grant-tables

或者/etc/init.d/mysql.server start --skip-grant-tables

#我感觉意思就是说启动的时候跳过权限这个表,就实现无密码登录了

mysql>mysql -u root -p #直接回车就可以进入数据库

mysql>use mysql

mysql> update user set authentication_string ='' where user ='root';

最后删除免密码登录就OK

mysql 常用参数:

-u 用户

-p 密码

-h IP

-P 端口

-S socket文件

-e 免交互执行命令

< 导入SQL脚本

非常规安装

1、将数据文件位置转移,添加/etc/my.cnf的模块

修改数据目录到其他目录,先把原来的/usr/local/mysql/data 整个目录移动到 /data ,最在/etc/my.cnf 中添加一个模块

[mysqld]

datadir=/data/mysql/data

[root@localhost init.d]# /etc/init.d/mysql.server start

Starting MySQL.. SUCCESS!

[root@localhost mysql]# ls #把原来的data目录搬到了外面/data

bin docs include lib LICENSE LICENSE.router man README README.router share support-files

也可以把整个mysql目录搬到其他地方,最后只需要在/etc/my.cnf中宣告basedir=/data/mysql/

另外也可以在初始化的时候指定这两个目录的位置,就不用搬来搬去了,

环境变量也需要添加

2、MySQL多实例

配置文件复制一份,添加一个新的端口3307

连接方式不同,需要指定sock文件 -S /tmp/mysql3307.sock

拷贝之后修改文件所属者和所属组

mysql> show variables like '%sock%';

+-----------------------------------------+------------------+

| Variable_name | Value |

+-----------------------------------------+------------------+

| mysqlx_socket | /tmp/mysqlx.sock |

| performance_schema_max_socket_classes | 10 |

| performance_schema_max_socket_instances | -1 |

| socket | /tmp/mysql.sock |

+-----------------------------------------+------------------+

[root@localhost mysql2]# cat /etc/my3307.cnf

[mysqld]

basedir=/data/mysql2

datadir=/data/mysql2/data

port=3307

socket=/tmp/mysql3307.sock

mysqlx_port=33070

mysqlx_socket=/tmp/mysqlx33070.sock

[root@localhost mysql2]# bin/mysqld --defaults-file=/etc/my3307.cnf --user=mysql & #后台启动该实例进程

2019-10-12T06:23:49.364951Z 0 [System] [MY-010116] [Server] /data/mysql2/bin/mysqld (mysqld 8.0.13) starting as process 16877

2019-10-12T06:23:50.692041Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: '/tmp/mysqlx33070.sock' bind-address: '::' port: 33070

3、查看端口和临时文件夹

[root@localhost ~]# netstat -lntup |grep mysql

tcp6 0 0 :::3307 :::* LISTEN 16877/bin/mysqld

tcp6 0 0 :::33070 :::* LISTEN    16877/bin/mysqld

tcp6 0 0 :::33060 :::* LISTEN 16821/mysqld

tcp6 0 0 :::3306 :::* LISTEN 16821/mysqld

[root@localhost ~]# ls /tmp/

ks-script-TlWukQ mysqlx.sock

mysql3307.sock mysqlx.sock.lock

mysql3307.sock.lock mysql.sock mysql.sock.lock

mysqlx33070.sock mysqlx33070.sock.lock

4、指定socket文件启动mysql实例

[root@localhost ~]# mysql -u root -S /tmp/mysql3307.sock -p

Enter password:

5、测试,添加数据库,查看3307实例的data目录

mysql> create database course;#创建数据库course

Query OK, 1 row affected (0.03 sec)

mysql> show databases; #另一个数据库对比,说明实例添加成功

[root@localhost ~]# ll /data/mysql2/data/ -t

#新建的数据库在该进程的数据目录下会有一个新的目录

drwxr-x---. 2 mysql mysql 6 Oct 12 14:29 course

6、错误日志,数据文件目录

mysql> show variables like '%log_error%';

[root@localhost ~]# tail -1 /data/mysql/data/localhost.localdomain.err

2019-10-12T06:16:59.715604Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: '/tmp/mysqlx.sock' bind-address: '::' port: 33060

可以修改错误日志文件目录位置在/etc/my.cnf

log_error=/data/mysql/data/abc.log

7、指定允许的连接 地址

bind-address(默认是*)

*代表接受所有来自IPV4、 IPV6主机网卡的TCP/IP连接

0.0.0.0代表接受所有来自IPV4主机网卡的TCP/IP的连接

指定的IP如127.0.0.1,代表只接受此地址请求的TCP/IP连接,只接受本地

8、参数

default-storage-engine(默认是InnoDB):指定MySQL的默认存储引擎

default- time -zone:指定默认时区,如果没有指定则和系统默认时区一致

9、关闭防火墙

[root@localhost mysql]# systemctl stop firewalld

[root@localhost mysql]# systemctl status firewalld

Active: inactive (dead) since Sun 2019-10-13 15:13:52 CST; 7s ago

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值