MySQL的安装.多实例.体系结构和基础管理

一、MySQL简介

1.什么是数据

数据可以是连续的值,比如声音、图像,称为模拟数据。也可以是离散的,如符号、文字,称为数字数据。
在计算机系统中,数据以二进制信息单元0,1的形式表示。

数据的定义: 数据是指对客观事件进行记录并可以鉴别的符号,是对客观事物的性质、状态以及相互关系等进行记载的物理符号或这些物理符号的组合。它是可识别的、抽象的符号。

2.数据库管理系统种类

1)关系型数据库 RDBMS(related database management system)

mysql
oracle
sqlserver
PostgreSQL
mariadb

以多张二维表的方式来存储,又给多张表建立了一定的关系(关系型数据库)

#范式拆表:将一个表拆到不能再拆

2)非关系型数据库NoSQL (not only sql)

redis
    127.0.0.1:6379> set k1 v1   #设置值
    OK
    127.0.0.1:6379> get k1      #查看值
    "v1"
memcache
mongodb
elasticsearch

非关系型数据库,很多以json格式进行存储数据的

neo4j 存储图片用数据库

3)关系型数据库和非关系型数据库对比

关系型数据库:
    1.强大的查询功能
    2.强一致性
    3.二级索引

非关系型数据库:
    1.灵活
    2.高扩展性
    3.性能高

4)关系型数据库和非关系型数据库特点对比

关系型数据库(RDBMS)的特点:
    1.二维表
    2.数据存取是通过SQL(Structured Query Language结构化查询语言)
    3.最大特点数据安全性方面强(ACID)
        原子性,一致性,隔离性,持久性

非关系型数据库(NoSQL:Not only SQL)的特点:
    1.不是否定关系型数据库,而是做关系型数据库的补充。
    2.性能高,速度快

5)NoSQL特性总览

1. 不是否定关系型数据库,而是做关系型数据库的补充,现在也有部分替代的趋势mongodb。
2. 关注高性能,高并发,灵活性,忽略和上述无关的功能。
3. 现在也在提升安全性和使用功能。
4. 典型产品:redis(持久化缓存)、MongoDB(最接近关系型数据库的NoSQL)、memcached。
5. 管理不适用SQL管理,而是用一些特殊的API或数据接口。

6)NoSQL的分类、特点、典型产品

1.键值(key value)存储:memcached、redis
2.列存储(column-oriented):HBASE(新浪、360)Cassandra(200台服务器集群)
3.文档数据库(document-oriented):MongoDB(最接近关系型数据库的NoSQL)
4.图形存储(Graph):Neo4j




3.MySQL序

Linux/UNIX 上安装 MySQL
Linux平台上推荐使用RPM包来安装Mysql,MySQL AB提供了以下RPM包的下载地址:

MySQL - MySQL服务器。你需要该选项,除非你只想连接运行在另一台机器上的MySQL服务器。
MySQL-client - MySQL 客户端程序,用于连接并操作Mysql服务器。
MySQL-devel - 库和包含文件,如果你想要编译其它MySQL客户端,例如Perl模块,则需要安装该RPM包。
MySQL-shared - 该软件包包含某些语言和应用程序需要动态装载的共享库(libmysqlclient.so*),使用MySQL。
MySQL-bench - MySQL数据库服务器的基准和性能测试工具。
安装前,我们可以检测系统是否自带安装 MySQL:

rpm -qa | grep mysql
如果你系统有安装,那可以选择进行卸载:

rpm -e mysql  // 普通删除模式
rpm -e --nodeps mysql  // 强力删除模式,
如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除

二、MySQL5.6安装 (二进制、源码、多实例) 

1. 安装(二进制包)

1. 安装依赖
yum install -y ncurses-devel libaio-devel gcc gcc-c++ glibc cmake autoconf openssl openssl-devel
2.做软连接
[root@m01 ~]# ln -s /usr/local/mysql-5.6.46-linux-glibc2.12-x86_64 /usr/local/mysql

3.拷贝配置文件和启动脚本
[root@m01 support-files]# cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
[root@m01 support-files]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
4.初始化数据库 
创建用户和授权
[root@db02 ~]# useradd mysql -s /sbin/nologin -M

清空数据库回到初始状态也可以用这个方式:
[root@m01 ~]# cd /usr/local/mysql/scripts/
[root@m01 scripts]# ./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

--user: 指定用户
--basedir: 指定安装目录
--datadir: 指定数据目录

'初始化成功的标志是两个ok'

' 缺少安装依赖的报错。 (依赖:ncurses-devel libaio-devel gcc gcc-c++ glibc cmake autoconf openssl openssl-devel)

' 必须进入/usr/local/mysql/scripts目录下执行。不然就会报错。'
' 注意不能分shell执行,会缺少环境。'
5.配置环境变量和system管理
[root@m01 scripts]# vim /etc/profile.d/mysql.sh
export PATH=/usr/local/mysql/bin:$PATH

[root@m01 scripts]# source /etc/profile

[root@m01 scripts]# vim /usr/lib/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=https://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000

[root@m01 scripts]# systemctl daemon-reload
[root@m01 scripts]# systemctl start mysqld

查看 MySQL 运行状态:
systemctl status mysqld
查看 MySQL 版本:
[root@host]# mysqladmin --version
[root@xpbag ~]# mysqladmin -V

2. 二进制安装指定目录

1.方法与二进制安装相同
2.'启动失败,是因为mysql文件中很多都是/usr/local/mysql,我们需要替换'
[root@db03 mysql]# sed -i 's#/usr/local/mysql#/service/mysql#g' /etc/init.d/mysqld /service/mysql/bin/mysqld_safe 

#修改配置文件
[root@db03 mysql]# vim /etc/my.cnf
basedir = /service/mysql
datadir = /service/mysql/data

#再次启动
[root@db03 mysql]# /etc/init.d/mysqld start

3. 源码安装 (源码包)

1.生成
[root@db02 ~]# cd mysql-5.6.46/
[root@db02 mysql-5.6.46]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.46 \
-DMYSQL_DATADIR=/usr/local/mysql-5.6.46/data \
-DMYSQL_UNIX_ADDR=/usr/local/mysql-5.6.46/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_ZLIB=bundled \
-DWITH_SSL=system \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_DEBUG=0

2.编译和安装
[root@db02 mysql-5.6.46]# make && make install

3.拷贝配置文件和启动脚本
[root@db02 ~]# cd /usr/local/mysql/support-files/
[root@db02 support-files]# cp my-default.cnf /etc/my.cnf
[root@db02 support-files]# cp mysql.server /etc/init.d/mysqld

3.创建用户和授权
[root@db02 ~]# useradd mysql -s /sbin/nologin -M

4.初始化数据库
[root@db02 support-files]# cd /usr/local/mysql/scripts/
[root@db02 scripts]# ./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

5.创建socket文件位置并授权。
[root@db02 scripts]# mkdir /usr/local/mysql-5.6.46/tmp/
[root@db02 scripts]# chown -R mysql.mysql /usr/local/mysql
[root@db02 scripts]# chown -R mysql.mysql /usr/local/mysql-5.6.46/

6.配置环境变量或system管理后启动

4. 多实例安装

1.)同版本多实例

#mysql 多实例,也是多个配置文件启动数据库
mysql多个配置文件:共用一套mysql程序
1.多个端口
2.多个socket文件
3.多个日志文件
4.多个srver_id
5.多个数据目录

1.)创建多实例目录,mysql主程序放在 /service/mysql
[root@db03 ~]# mkdir /service/{3307,3308,3309}

2.)编辑3个配置文件3307/3308/3309
[root@db03 ~]# vim /service/3307/my.cnf
--------------------
[mysqld]
basedir = /service/mysql
datadir = /service/3307/data
port=3307
socket=/service/3307/mysql.sock
server_id=1
log_err=/service/3307/data/mysql.err
log_bin=/service/3307/data/mysql-bin
-------------------
[root@db03 ~]# vim /service/3308/my.cnf
...
[root@db03 ~]# vim /service/3309/my.cnf
...

3.)初始化多实例数据目录3307.3308.3309
'初始化的时候需要多指定一个默认配置文件的位置'
[root@db03 scripts]# ./mysql_install_db --defaults-file=/service/3307/my.cnf --user=mysql --basedir=/service/mysql --datadir=/service/3307/data
相同配置 3308... 3309...

4.)授权目录
[root@db03 service]# chown -R mysql.mysql /service/

5.)启动多实例 3307. 3308. 3309.
[root@db03 service]# mysqld_safe --defaults-file=/service/3307/my.cnf &

6.)多实例设置密码并登录 3307. 3308. 3309.
'需要用-S指定socket文件启动'
[root@db03 service]# mysqladmin -S /service/3307/mysql.sock -uroot password '123'

或者
[root@db03 service]# mysql -S /service/3307/mysql.sock -uroot -p123

或者
[root@db03 service]# /usr/local/mysql/bin/mysqld --defaults-file=/service/3307/my.cnf -uroot -p123

7.)给mysql 3307 3308 3309简单连接方式,制作可执行命令:
[root@db03 service]# vim /usr/bin/mysql3307
mysql -S /service/3307/mysql.sock -uroot -p123
相同配置 3308... 3309...
'增加一个执行权限'
[root@db03 service]# chmod +x /usr/bin/mysql33*
[root@db03 service]# mysql3307
'开启多个实例,内存不足报错或者退出一个实例,原因是内存不足,一般需要至少2g内存。'

2.)不同版本多实例

1.检查修改已有mysql环境的环境变量
vim /etc/profile
注释本行 # export PATH=/user/local/mysql/bin:$PATH

2.备份并移除my.cnf文件(影响初始化和启动.)准备多个不同文件夹对应不同版本
/usr/local/mysql56
/usr/local/mysql57
/usr/local/mysql80

3.配置my.cnf文件
...省略
"mysql8.0以后版本会自动生成binlog放在data目录下."

4.初始化数据
"5.6版本"
.../mysql56/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql56 --datadir=/usr/local/mysql56/data
"5.7版本"
.../mysql57/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql57 --datadir=/usr/local/mysql57/data
"8.0版本"
.../mysql80/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql80 --datadir=/usr/local/mysql80/data

5.启动脚本
.../mysql56/bin/mysqld --defaults-file=/data/3306/my.cnf
.../mysql57/bin/mysqld --defaults-file=/data/3307/my.cnf
.../mysql80/bin/mysqld --defaults-file=/data/3308/my.cnf
# 8.0会启动2个端口

6.登录mysql
#目前5.7版本以上mysql客户端可以通用同时支持所有版本,只设置一个环境变量即可支持所有实例. (5.6的mysql不支持8.0,密码验证方式有区别.)
配置一个环境变量即可.
mysql -S /tmp/mysql3306.sock
mysql -S /tmp/mysql3307.sock
mysql -S /tmp/mysql3308.sock

5. 多实例主从复制

1.)主库操作

1.开启binlog
[root@db03 service]# vim /service/3307/my.cnf 
[mysqld]
basedir = /service/mysql         #二进制包的位置
datadir = /service/3307/data
port=3307
socket=/service/3307/mysql.sock
server_id=1
log_err=/service/3307/data/mysql.err
log_bin=/service/3307/data/mysql-bin

2.主库授权一个用户,给从库用来连接
mysql> grant replication slave on *.* to rep@'172.16.1.%' identified by '123';
"注意:root@'%'会报没有权限,需要root@localhost本地授权"

3.主库查看binlog信息                      
mysql> show master status;
+------------------+----------+
| File             | Position |
+------------------+----------+
| mysql-bin.000003 |      468 |
+------------------+----------+

Uon4at.png

' binlog与/mysql/data/下的最后一个bin文件相关联'

2.) 从库的操作

'从库需要知道的主库信息:'
主库的IP
连接主库用的用户和密码
binlog信息
---------------------------------
[root@db01 ~]# mysql3308              #进入从库的数据库中:
1.配置主从
mysql> change master to
master_host='172.16.1.53',
master_user='rep',
master_password='123',
master_log_file='mysql-bin.000003',
master_log_pos=468,
master_port=3307;

1.开启IO线程和sql线程
mysql> start slave;

2.查看主从配置
mysql> show slave status\G;

UoKS0A.png

' 需要2个都为Yes才设置成功。'

3.)IO线程不为YES的解决方法

1.测试网络
[root@db03 ~]# ping 172.16.1.53

2.测试端口
[root@db03 ~]# telnet 172.16.1.53 3307

3.测试主库授权的用户登录
[root@db03 ~]# mysql -urep -p123 -h172.16.1.53 -P3307

4.配置反向解析
[root@db03 service]# vim /service/3307/my.cnf 
skip-name-resolve

5.检查UUID是否相同
[root@db03 ~]# cat /service/3307/data/auto.cnf 
[auto]
server-uuid=527f6221-c286-11ea-9ca7-000c29e19d84
'uuid在mysql/data/auto.cnf文件中,如果是拷贝的文件就需要手动修改uuid。'

#修改配置后需要重启服务
[root@db03 ~]# mysqladmin -uroot -p123 -S /service/3308/mysql.sock shutdown
[root@db03 ~]# mysqld_safe --defaults-file=/service/3309/my.cnf &

4.)SQL线程不为YES的解决方法

1.主库有数据,从库没有
2.从库有数据,主库没有
' 主从数据库数据不一致!! (先同步数据,再做主从。)'

6. MySQL5.6与5.7区别

1.) mysql5.7在编译安装的时候多了一个boostorg库

2.) cmake编译时要配置boost
#开启BOOST库
-DDOWNLOAD_BOOST=1 \
#指定boost库位置
-DWITH_BOOST=/usr/local/boost_1_59_0 \

3.)初始化不同
'5.6版本初始化'
[root@db02 ~]# cd /usr/local/mysql/scripts/
[root@db02 scripts]# ./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
'5.7版本初识化'
[root@db02 scripts]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

--initialize   生成一个随机密码写到一个文件(会直接显示在执行输出)

4.)其他区别
1.mysql5.7 提供json格式数据
2.mysql5.7 支持多主一从
3.做高可用方式不同

7. mysql连接管理

# 区分
mysqld 是server端可执行文件(其中一个)
mysql 是客户端命令行 client
mysqladmin 是维护或管理实用程序

1.)mysql自带的连接工具  mysql
mysql 常用的参数
-u:     #指定用户           mysql -uroot
-p:     #指定用户的密码      mysql -uroot -p123
-h:     #指定连接的主机      mysql -uroot -p123 -h172.16.1.51
-S:     #指定socket文件     mysql -uroot -p123 -S /tmp/mysql.sock
-P:     #指定端口           mysql -uroot -p123 -P3307
-e:     #库外执行sql语句     mysql -uroot -p123 -e 'show databases'
2)第三方连接工具
1.navicat
2.sqlyog
3.phpmyadmin

3.)socket连接
mysql -uroot -p123 -S /tmp/mysql.sock

4.)TCP/IP连接
mysql -uroot -p123 -h 172.16.1.51

8.配置文件位置

/etc/my.cnf
/etc/mysql/my.cnf
MYSQL_HOME/my.cnf(前提是在环境变量中定义了MYSQL_HOME变量)
defaults-extra-file (类似include)
~/my.cnf
-------------------
# 配置文件内容
vim /etc/my.cnf
------------------
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
server_id=
log_err=
log_bin=datadir/db01.err     启动的时候启动信息和错误信息
datadir/mysql.pid    启动的时候sock文件pid文件

配置文件优先级
1.~/.my.cnf
2.basedir/my.cnf
3./etc/mysql/my.cnf
4./etc/my.cnf

'综合配置优先级从高到低'
命令行 > --defaults-file > ~/my.cnf > $basedir/my.cnf > /etc/mysql/my.cnf > /etc/my.cnf > defaults-extra-file > 初始化 > 预编译

defaults-extra-file 相当于include 放在哪个文件里就和那个文件的优先级相同。

9. 启动和关闭

1.systemctl start mysql
2./etc/init.d/mysqld start
3.mysqld_safe --defaults-file=/etc/my.cnf
4.mysqld --defaults-file=/etc/my.cnf
'最终都是mysqld_safe启动,mysqld守护进程在后台'

#正经关闭数据
1.systemctl stop mysql
2./etc/init.d/mysqld stop
3.mysqladmin -uroot -p123 shutdown (-S 指定sock文件)

#不正经关闭数据库
1.kill -9 mysqlpid
2.killall mysqld
3.pkill mysqld
#后果:
1.如果业务量很大,数据库不会立刻关闭,只是停止服务,pid文件和socket文件还存在
2.如果业务量很大,会丢失数据

10. mysqld_safe命令行

mysqld_safe
--skip-grant-tables 
--skip-networking
--datadir=/application/mysql/data
--basedir=/application/mysql
--defaults-file=/etc/my,cnf
--pid-file=/application/mysql/data/db01.pid
--socket=/application/mysql/data/mysql.sock
--user=mysql
--port=3306
--log-error=/application/mysql/data/db01.err

三、MySQL5.7安装

1.下载安装包

从MySQL官网的下载页面,选择版本以及平台,就会列出符合该要求的MySQL下载链接,然后我们在根据实际情况进行选择。这里的平台选择Linux Generic(Linux通用,也就是这个包适用于大多数的Linux系统)。64位系统,选择了mysql-5.7.20-linux-glibc2.5-x86_64.tar.gz

你也可以打开终端用下面命令直接下载:
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.20-linux-glibc2.5-x86_64.tar.gz
这个包有623.7M,下载需要较长的时间。

2.安装步骤

1.清理环境mariadb可能和mysql5.7冲突.
rpm -qa|grep mariadb
yum remove mariadb-libs -y

2.创建用户和组
useradd mysql -s /sbin/nologin -M

3.上传tar包解压并创建软连接
ln -s mysql-5.7.28-linux-glibc2.12-x86_64 /user/local/mysql

4.创建相关目录
数据目录/data/  (一般放在不同磁盘最好)
日志目录/binlog/

5.设置权限
chown -R mysql.mysql /user/local/mysql /data /binlog

6.配置环境变量
vim /etc/profile.d/mysql.sh
---------
export PATH=/usr/local/mysql/bin:$PATH
---------
source /etc/profile

以上相当于已经安装好mysql了,接下来是需要初始化系统库表
会报错缺少依赖包

依赖问题 注意事项:

# mysql初始化工作依赖libaio包,如果没有安装就会出现这个错误:
“bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory”。

# 检查是否已安装:
yum search libaio 或 apt-cache search libaio

# 如果没有,则安装:
yum install libaio -y 或 apt-get install libaio1

yum适用于centos/readhat等系统,apt-get适用于ubuntu、debian系统,请按自己需要选择。


# 删除etc下的旧文件my.cnf;重新创建my.cnf
==========================
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8 
[mysqld]
skip-name-resolve
#设置3306端口
port = 3306 
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB 

# 报错1: 指定的/user/local/mysql不存在,
原因:文件未创建或者字母打错,应该是usr
需要datadir安装在mysql根目录下才可以不报这个错误。安装在其他目录也没有关系。

# 报错2: 指定的datadir文件下已经有文件了.需要清除文件后重新初始化.

扩展5.7初始化:

mysqld --initialize
---初始化完成后会有12位临时密码. 2.密码使用严格模式.复杂密码.
mysqld --initialize-insecure
---创建root用户无密码

7.初始化
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/
8.复制启动文件
[root@db01 ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql.server

9.启动mysql
[root@db01 ~]# /etc/init.d/mysql.server start
或者
[root@db01 ~]# service mysql start   # (/stop/restart)

[root@db01 ~]#  mysql
或者
[root@db01 ~]#  mysql -u root -p
Enter password: 输入之前保存的密码  (mysqld --initialize 方式)

########## 注意: ##########
5.7安装过程中mysqld --initialize方式会提供一个mysql首次登录密码,注意保存.
首次登录后会强制修改密码,否则无法使用数据库.

########## 报错1 : ##########
ERROR 2002 (HY000): Can t connect to local MySQL server through socket '/tmp/mysql.sock'
原因: my.cnf中的mysqld和client没有同时配置相同的目录.

########## 报错2 : ##########
[root@db01 ~]#  mysql -u root -p
Enter password: 
ERROR 2002 (HY000): Can t connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
原因: mysql实例未启动

报错3:

原因: 缺少/etc/my.cnf文件或者配置中没有指定data文件.

3.MySQL的 my.cnf文件

官网说:从5.7.18开始不在二进制包中提供my-default.cnf文件。

经过测试,在5.7.18版本中,使用tar.gz安装时,也就是压缩包解压出来安装这种,已经不再需要my.cnf文件也能正常运行。

my.cnf文件就是把在命令行上启动MySQL时后面的参数用cnf文件配置好,那么下载启动时就不再需要在命令上加如参数。

这个my.cnf文件可以是自定义位置,也可以使用如下默认的位置,只要放在默认位置,MySQL自动识别(通过deb或者APT源安装的,初始位置在下方列表):

文件名 目的
/etc/my.cnf 全局选项
/etc/mysql/my.cnf 全局选项
SYSCONFDIR/my.cnf 全局选项
$MYSQL_HOME/my.cnf 服务器特定选项(仅限服务器)
defaults-extra-file 指定的文件 --defaults-extra-file,如果有的话
~/.my.cnf 用户特定选项
~/.mylogin.cnf 用户特定的登录路径选项(仅限客户端)

以上的详细说明可以参考官方解释:https://dev.mysql.com/doc/refman/5.7/en/option-files.html

总之,无论是使用APT源安装还是deb包安装,或者二进制(压缩包tar.gz)包安装的,都可以通过my.cnf文件进行配置来达到MySQL的启动配置及调优。

#常用简单配置如下:
vim /etc/my.cnf
=============================
[mysqld]
#设置3306端口
port = 3306 
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data
user=mysql
server_id=1
#开启binlog日志
log_bin=/usr/local/mysql/data/mysql-bin
#跳过反向解析
skip-name-resolve
#设置into outfile 安全目录
secure-file-priv=/tmp /root  
# 允许最大连接数
# max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB 

4.配置systemctl启动

# 1.把mysqld添加至systemctl进行管理
'方式一:复制过去后,会sytemctl会自动识别的'
cp /opt/mysql5.7/support-files/mysql.server /etc/rc.d/init.d/mysqld.server

'方式二:编辑mysqld.service'
vim /usr/lib/systemd/system/mysqld.service
————————————————
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/mysql-5.7/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
————————————————

# 2.添加执行权限
chmod +x /etc/rc.d/init.d/mysqld.server

# 3.把mysql的bin目录添加至环境变量
mysql客户端要连接时候方便
echo "PATH=/opt/mysql5.7/bin/:$PATH" >> /etc/profile

# 3.让修改的文件不重启生效
source /etc/profile

# 4.设置开机自启动
systemctl enable mysqld.server
或者:
chkconfig --add mysqld.server
chkconfig mysqld.server on

四、Mysql windows版安装

1.官网下载

https://downloads.mysql.com/archives/community/
选择合适的版本(本次选择解压缩版)
解压下载好的压缩包放到你想要放的目录

2.设置环境变量

打开环境变量

新增环境变量

变量名用MYSQL_HOME,变量值就是刚刚的解压后的文件目录,然后点击确认

然后设置path即可

3.使用cmd安装

1.用 以管理员身份运行 打开CMD,切换到MySql的解压目录下的bin目录

2.输入mysqld -install将mysql安装为Windows的服务

3.输入mysqld --initialize-insecure --user=mysql
执行上面命令后会在MySQL的安装目录下生成data目录并创建root用户(无密码)

或者使用有密码方式,输入命令mysqld --initialize --console来初始化数据库,并记录红色标注的字符,这是随机生成的密码

4.输入命令net start mysql或sc start mysql启动mysql服务
5.输入mysql -u root -p来登陆数据库,并输入前面记录的临时密码
6.登陆成功后输入命令alter user 'root'@'localhost' identified by '想要设置的密码';将原来复杂的密码修改为自己的密码,并输入commit;提交:

4.可选操作

可选操作:新增配置文件:my.ini,
放在mysql目录下或者bin下。
内容如下:

[mysqld] 
# 设置mysql的安装目录,也就是刚才我们解压的目录
basedir=C:/mysql-8.0.13-winx64
# 设置mysql数据库的数据的存放目录
# datadir=C:/mysql-8.0.13-winx64/data
# 设置默认使用的端口
port=3306
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人试图攻击数据库
max_connect_errors=10
# 服务端使用的字符集
character-set-server=utf8mb4
# 数据库字符集对应一些排序等规则使用的字符集
collation-server=utf8mb4_general_ci
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件作为认证加密方式
# MySQL8.0默认认证加密方式为caching_sha2_password
default_authentication_plugin=mysql_native_password

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4

[client]
default-character-set=utf8mb4
port=3306

停止MySQL服务:net stop mysqld或sc stop mysqld
删除MySQL服务:sc delete mysqld或mysqld -remove(需先停止服务)


五、Mysql 体系结构和基础管理

1.MySQL的C/S工作模型

2.链接方式

  • 本地socket
    socket=/tmp/mysql.sock
    mysql -S /tmp/mysql.sock

  • tcp/ip远程登录
    mysql -uroot -p123 -h172.16.1.51


MySQL连接方法:

3.服务器端多实例

  • 实例: mysql+工作线程+预分配内存结构
  • 功能: 管理数据

4.Mysqld程序流程结构

5.MySQL逻辑结构

段: 1个表就是一个端,有1个或多个区构成
区: 1个区(簇),默认1M,连续的64个pages
页: 1个页,默认16kb,连续的4个os block
块: 1个块(数据块),默认4kb, 连续的8个扇区
扇区: 1个扇区,512B,由512个字节组成.

6.MySQL物理存储结构


Copyright © 2009 - Now . XPBag.com . All rights Reserved.
夜心的小站 » MySQL的安装.多实例.体系结构和基础管理

发表评论

提供最优质的资源集合

立即查看 了解详情