个人博客
https://blog.csdn.net/cPen_web
介绍
MySQL
MySQL是一个数据库软件 数据库 database
关系型数据库
oracle(甲骨文)、MSSQL(SQL server)、MySQL、postgreSQL(PG 国内的)
非关系型数据库
NOsql:redis、mongodb
为什么是MySQL?
1 . MySQL是一个比较成熟而且稳定、有很多大公司在使用的。 --> 在国内的生态系统非常完善 --> BATJM、滴滴等
互联网企业里 --> 民营企业 --> 上市 --> 披露你的信息化建设 -->
2 .MySQL是开源的,有免费版本
为什么现在的centos 默认的数据库不是MySQL了,而是mariadb呢?
答:业内非常担忧MySQL的前程,没有办法超越的oracle,永远做小弟,而且MySQL越来越像oracle
担心它的创新能力、是否继续开源。
[root@nfs ~]# yum install mysql
正在安装:
mariadb
……
mysql是否收费?
1 .商业版本收费 commercial --> 收费 --> 提供技术支持
标准版
企业版
集群
2 .社区版 MySQL Community (GPL) Downloads --> 免费 --> 学习
不提供技术支持
社区:全球的MySQL的生态圈:有使用者,相关的开发者等人组成的一个圈子
MySQL跨平台:windows、unix、linux、mac os
x86是cpu里的架构技术 --> intel --> 主流
ARM是cpu的底层架构技术 --> 手机、嵌入式
mysql-8.0.23 --> mysql比较高的版本8.0.23 --> 社区版本
mysql 5.7.32 --> 社区版本 --> 推荐
rpm包:非常方便的安装
源码包:安装复杂些
mysql-5.7.32-1.el7.x86_64.rpm-bundle.tar --> 压缩包 里面都是rpm包
mysql-community-5.7.32-1.el7.src.rpm --> source code 源码包 --> 包含源码包的rpm包
rpm包安装:
rpm包:是redhat、centos的linux系统里的软件包的格式,类似于windows的.exe程序。只是centos里的软件包是以.rpm结尾
rpm --> redhat package manager --> redhat的软件包管理工具
rpm命令是centos 的linux里的软件管理的命令
rpm包是如何来的呢?
答:软件源代码 --> 制作出rpm包 (规定了软件安装的路径、软件需要的依赖关系,也是就其他的软件等配置) --> 去安装 --> 安装到固定的地方,我们不能去指定安装路径
mysql的rpm安装包软件从哪里来?
答:从mysql的官方网站下载
https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.32-1.el7.x86_64.rpm-bundle.tar
国内的阿里、华为、腾讯 --> 对MySQL进行了二次开发
md5值 根据文件大小算出摘要值 --> 防伪
如何将windows里下载好的软件上传到linux里?
1 .使用xshell里的文件传输功能 --> xftp
2 .安装lrzsz软件,直接拖到linux里就可以
[root@mysql_rpm ~]# yum install lrzsz -y
[root@mysql_rpm ~]# rz #注:或者在windows里直接拖动到xshell命令窗口里
#注:yum使用的语法是Python2,centos7里面把默认Python改成Python3会导致yum出错
rpm方式安装MySQL
步骤:
1 .上传文件到Linux里
2 .解压
3 .使用yum命令安装
4 .启动mysql服务
5 .查看进程和端口号
6 .登录 --> 查看临时密码 --> 修改临时密码
7 .查看数据库里有哪些库
===============================================================================
步骤1:将windows里下载的安装包上传到linux系统里
[root@mysql_rpm ~]# ls
anaconda-ks.cfg mysql-5.7.32-1.el7.x86_64.rpm-bundle.tar
===============================================================================
步骤2:解压上传的软件包
[root@mysql_rpm ~]# tar xf mysql-5.7.32-1.el7.x86_64.rpm-bundle.tar #注:解压
[root@mysql_rpm ~]# ls
anaconda-ks.cfg
mysql-community-embedded-compat-5.7.32-1.el7.x86_64.rpm
mysql-5.7.32-1.el7.x86_64.rpm-bundle.tar
mysql-community-embedded-devel-5.7.32-1.el7.x86_64.rpm
mysql-community-client-5.7.32-1.el7.x86_64.rpm #注:提供mysql客户端命令的包
mysql-community-libs-5.7.32-1.el7.x86_64.rpm #注:mysql的相关的库
mysql-community-common-5.7.32-1.el7.x86_64.rpm #注:mysql相关的公共的软件
mysql-community-libs-compat-5.7.32-1.el7.x86_64.rpm #注:与某些软件兼容的库
mysql-community-devel-5.7.32-1.el7.x86_64.rpm #注:与mysql开发相关的库的软件 development 开发
mysql-community-server-5.7.32-1.el7.x86_64.rpm #注:服务器端的包,提供mysql服务器端程序
mysql-community-embedded-5.7.32-1.el7.x86_64.rpm #注:与嵌入式相关的软件
mysql-community-test-5.7.32-1.el7.x86_64.rpm #注:mysql 测试相关的软件
===============================================================================
步骤3:开始安装
[root@mysql_rpm ~]# yum install mysql-community-* -y
===============================================================================
步骤4:启动MySQL
[root@mysql_rpm ~]# service mysqld start
#注:service mysqld start 和 systemctl start mysqld效果一样
# service mysqld start --> centos6的老式用法
# systemctl start mysqld --> centos7和8里的新式用法
mysqld是MySQL的进程的名字 --> mysql daemon --> mysql的守护进程
守护进程:一直在内存里运行,默认情况下不退出,直到人为的停止
只要是对外提供服务的进程 --> 都是守护进程
如何知道mysql是否启动成功?
1 .查看进程
[root@mysql_rpm ~]# ps aux|grep mysqld
2 .查看端口
2-1 netstat
netstat是linux里查看本机开放了哪些网络端口的命令 --> net网络 status状态
[root@mysql_rpm ~]# yum install net-tools -y #注:安装net-tools工具
[root@mysql_rpm ~]# netstat -anpult #注:查看本机上哪些端口被哪些进程占用了
2-2 lsof
[root@mysql_rpm ~]# yum install lsof -y
[root@mysql_rpm ~]# lsof -i:3306 #注:直接查看3306端口被那个进程占用了
端口号和服务有什么关系?
进程和服务有什么关系?
服务运行 --> 启动一个进程 --> 必须要占用一个端口
一旦某个端口被一个进程占用了,其他的进程就不能占用了
怎么知道这个进程的端口号呢?
1 .软件的开发者可以定义我的这个软件使用那个端口 --> 会告诉使用者
2 .自己可以查看
[root@mysql_rpm ~]# netstat -anplut|grep mysqld
tcp6 0 0 :::3306 :::* LISTEN 1799/mysqld
端口号:1~65535 之间
1~1024之间的端口号,基本上已经被使用了,系统不建议我们自己开发的软件去使用
QQ:8000
netstat
netstat是linux里查看本机开放了哪些网络端口的命令
[root@mysql_rpm ~]# netstat -anplut|grep mysqld
tcp6 0 0 :::3306 :::* LISTEN 1799/mysqld
-a 查看所有的信息 all
-n 以数字的形式显示 number
-p 显示程序的名字program name 1799/mysqld 1799是mysqld进程的pid号
-u 显示所有udp端口
-t 显示所有tcp端口
-l 显示监听端口 LISTEN 显示守护进程监听的端口
0.0.0.0:22 0.0.0.0代表本机的任意ip地址 22表示开放的端口
知识点:登录进入MySQL
[root@mysql_rpm ~]# mysql -uroot -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
mysql是一个客户端的命令,用来登录mysql使用的
-u 指定登录用户 user
-p 指定密码 password
root 这个root不是我们linux系统里的root是MySQL软件里的超级用户,碰巧和linux系统里的超级用户同名
============================================================================================
步骤:获得MySQL的临时密码
获得MySQL的临时密码,临时密码是MySQL在第一次启动的时候,临时产生的,为了安全性考虑
存放在MySQL的日志文件里 /var/log/mysqld.log
temporary password 临时密码 是随机产生的,不同的电脑不一样
[root@mysql_rpm ~]# cat /var/log/mysqld.log |grep temp
2021-02-10T11:48:25.015771Z 1 [Note] A temporary password is generated for root@localhost: DLXneuIH1l#-
============================================================================================
步骤:登录MySQL
[root@mysql_rpm ~]# mysql -uroot -p'DLXneuIH1l#-' #注:登录MySQL使用指定的root用户和临时密码
mysql>
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
#注:第一次登录进入MySQL必须修改临时密码,使用ALTER USER语句去修改
============================================================================================
步骤:修改密码
mysql> alter user root@localhost identified by 'Sanchuang123#';
alter user 是命令
root@localhost 是用户名
identified by 是指定密码的命令(标识符)
'Sanchuang123#' 指定密码为Sanchuang123#
; 是mysql是命令的结束符号
#注:修改密码 满足密码复杂性要求:大小写、特殊符号、数字、长度
============================================================================================
步骤:退出MySQL,指定修改后的密码登录
mysql> exit #注:退出MySQL
Bye
[root@mysql_rpm ~]# mysql -uroot -p'Sanchuang123#' #注:登录的时候指定我们自己修改后的密码
mysql>
mysql> show databases; #注:查看你的MySQL数据库里有多少库
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
2个进程,mysql是经典的cs架构
mysqld 服务端进程
mysql 客户端进程 --> 访问mysqld服务端进程
示例:查看文件大小
[root@mysql_rpm ~]# ll -h mysql-5.7.32-1.el7.x86_64.rpm-bundle.tar #注:只能看文件大小
-rw-r--r--. 1 root root 518M 2月 10 18:09 mysql-5.7.32-1.el7.x86_64.rpm-bundle.tar
[root@mysql_rpm ~]# du -sh mysql-5.7.32-1.el7.x86_64.rpm-bundle.tar #注:都能看
518M mysql-5.7.32-1.el7.x86_64.rpm-bundle.tar
在实际的工作中数据库服务器在什么位置?一个网站的大概的架构是怎么样的?
用户 --> web服务器 --> 数据库服务器(后端)
哪些东西存放在数据库里?
1 .京东
用户的信息 存放在数据库
商品的信息:价格、库存、销量等 存放在数据库
图片、固定的文字 存放在网页里
2 .英雄联盟
游戏:用户信息、金币、等级、装备等
源码编译安装MySQL
mysql-community-5.7.32-1.el7.src.rpm
el7 --> enterprise linux 企业版的linux
src --> source code 源代码
编译安装的机器的配置
cpu --> 2个核心
内存 --> 4G步骤:
1 .上传源码包到linux系统
2 .安装解决软件依赖关系的包
3 .解压src.rpm包
4 .解压真正的源码包 + 将boost包移动到mysql解压的包里
5 .编译前的配置
6 .编译和编译安装
7 .安装后的操作
关闭防火墙firewalld、关闭selinux、mysql的初始化操作、获得临时密码、修改环境变量、复制mysql提供的启动mysqld服务的脚本到/etc/init.d目录下、生成/etc/my.cnf配置文件、启动mysqld服务、设置开机启动MySQL、重新设置密码
============================================================================================
步骤1:上传源码包到linux系统
[root@mysql_compile ~]# yum install lrzsz -y
[root@mysql_compile ~]# rz -E #注:上传源码包
rz waiting to receive.
[root@mysql_compile ~]# ls
anaconda-ks.cfg mysql-community-5.7.32-1.el7.src.rpm
mysql-community-5.7.32-1.el7.src.rpm #注:这个rpm包里包含了tar.gz结尾的压缩包
============================================================================================
步骤2:安装解决软件依赖关系的包
[root@mysql_compile ~]# yum install cmake ncurses-devel gcc gcc-c++ vim lsof bzip2 openssl-devel -y
============================================================================================
步骤3:解压src.rpm包
[root@mysql_compile ~]# rpm -ivh mysql-community-5.7.32-1.el7.src.rpm
rpm 是linux里的软件管理的命令
-ivh 是安装的意思 --> 本质上其实就是解压这个src.rpm包 install 安装
[root@mysql_compile ~]# ls
anaconda-ks.cfg mysql-community-5.7.32-1.el7.src.rpm rpmbuild
[root@mysql_compile ~]# cd rpmbuild/ #注:rpmbuild 目录一定会在用户的家目录下
[root@mysql_compile rpmbuild]# ls
SOURCES SPECS
[root@mysql_compile rpmbuild]# cd SOURCES/ #注:进入存放源码包的目录
[root@mysql_compile SOURCES]# ls
boost_1_59_0.tar.bz2 filter-provides.sh filter-requires.sh mysql-5.6.45.tar.gz mysql-5.7.32.tar.gz
============================================================================================
步骤4:解压真正的源码包 + 将boost包移动到mysql解压的包里
[root@mysql_compile SOURCES]# tar xf mysql-5.7.32.tar.gz
[root@mysql_compile SOURCES]# tar xf boost_1_59_0.tar.bz2
[root@mysql_compile SOURCES]# ls
boost_1_59_0 filter-provides.sh mysql-5.6.45.tar.gz mysql-5.7.32.tar.gz
boost_1_59_0.tar.bz2 filter-requires.sh mysql-5.7.32
[root@mysql_compile SOURCES]# mv boost_1_59_0 mysql-5.7.32 #注:将boost包移动到mysql解压的包里
[root@mysql_compile SOURCES]# cd mysql-5.7.32 #注:进入解压后的目录
[root@mysql_compile mysql-5.7.32]#
============================================================================================
步骤5:编译前的配置
[root@mysql_compile mysql-5.7.32]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DMYSQL_USER=mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=boost_1_59_0
--------------------------------------------------------------------------------------------
编译前的配置 --> 主要目的是生成后面编译的时候需要的配置文件Makefile的文件
cmake 是一个编译器,就是将c语言编写的代码翻译成机器可以执行的二进制的程序
gcc 也是一个编译器
配置说明 https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html
-DCMAKE_INSTALL_PREFIX
是编译安装MySQL的时候的固定语法参数,是给cmake传参的,告诉cmake 去生成一个叫做Makefile的文件
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql 指定MySQL安装的路径/usr/local/mysql 具体的路径可以自己定义
-DMYSQL_DATADIR=/data/mysql 指定MySQL的存放数据的目录 具体的路径可以自己定义 --> 仓库
-DSYSCONFDIR=/etc 指定MySQL的配置文件存放的目录 --> 门店
-DMYSQL_USER=mysql 指定启动mysql的用户 用户名可以自己定义 --> mysql这个用户是否会在编译安装的时候,自动新建?还是需要我们自己去创建?答:不会;自己去建
-DDEFAULT_CHARSET=utf8 指定MySQL里的默认的字符集 character set --> 推荐指定默认的字符集为utf8
默认的字符集:Latin1
-DDEFAULT_COLLATION=utf8_general_ci COLLATION 排序规则 utf8_general_ci utf8里的排序规则,不区分大小写
-DWITH_BOOST=boost_1_59_0 指定boost源码的位置,在mysql源码的当前目录下一个叫boost_1_59_0的文件夹
boost 是什么?
boost提供免费的经过同行评审的可移植C++源库 --> boost这个软件是对c++的支持
============================================================================================
步骤6:编译和编译安装
[root@mysql_compile mysql-5.7.32]# make -j 2 && make install
make -j 2 开始编译mysql ,启动2个进程同时编译,2代表2个进程,建议进程数和cpu核心数量一致
编译安装的时候,非常消耗cpu资源:
因为编译是将c语言代码翻译成二进制代码,非常消耗cpu,刚开始不是特别消耗内存
--------------------------------------------------------------------------------------------
[root@mysql_compile mysql-5.7.32]# top
top 查看linux系统性能参数的命令,cpu、内存、进程等信息
按数字1 可以查看每个cpu核心的信息
按q退出 quit
============================================================================================
步骤7:安装后的操作
步骤7.0:补充操作
#新建用户
useradd -r -s /sbin/nologin mysql
#新建数据目录
mkdir -p /data/mysql
#修改数据目录的拥有者为mysql
chown mysql:mysql /data/mysql
#注:-r 不创建家目录 系统用户;
数据目录/data/mysql 编译安装结束后不会自动创建,所以需要自己创建
===============================================================================
步骤7.1:备份原来的/etc/my.cnf文件,然后清空这个文件,这个文件是mariadb的配置文件,不是mysql的
[root@mysql_compile ~]# cp /etc/my.cnf /root/mysql.cnf.bak
[root@mysql_compile ~]# >/etc/my.cnf
===============================================================================
步骤7.2:初始化操作
[root@mysql_compile ~]# cd /usr/local/mysql/bin/
[root@mysql_compile bin]# ./mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql
2021-02-11T04:55:45.103165Z 1 [Note] A temporary password is generated for root@localhost: 4eYt!x#hZk_U
#注:会产生mysql的临时密码 4eYt!x#hZk_U
#初始化操作,其实是MySQL会去创建很多必须要的文件,会消耗磁盘空间
===============================================================================
步骤7.3:修改PATH变量,在linux系统里可以找到编译安装的mysql相关的命令
[root@mysql_compile bin]# PATH=$PATH:/usr/local/mysql/bin
[root@mysql_compile bin]# echo 'PATH=$PATH:/usr/local/mysql/bin' >>/etc/bashrc
===============================================================================
步骤7.4:拷贝mysqld的程序文件到指定的目录,方便后面设置mysqld服务开机启动
[root@mysql_compile bin]# cp ../support-files/mysql.server /etc/init.d/mysqld
===============================================================================
步骤7.5:关闭防火墙和selinux
[root@mysql_compile bin]# service firewalld stop
[root@mysql_compile bin]# systemctl disable firewalld
[root@mysql_compile bin]# setenforce 0
[root@mysql_compile bin]# sed -i 's/=enforcing/=disabled/g' /etc/selinux/config
===============================================================================
步骤7.6:设置MySQL开机启动
[root@mysql_compile bin]# chkconfig mysqld on
===============================================================================
步骤7.7:启动MySQL
[root@mysql_compile bin]# service mysqld start
[root@mysql_compile bin]# ps aux|grep mysql #注:查看mysql进程是否启动
root 26019 0.0 0.1 149768 5712 pts/0 S+ 12:45 0:01 vim onekey_install_mysql.sh
root 26241 0.0 0.0 11824 1596 pts/1 S 14:18 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/mysql_compile.pid
mysql 26326 15.7 4.3 1601188 168904 pts/1 Sl 14:18 0:23 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=mysql_compile.err --pid-file=/data/mysql/mysql_compile.pid
root 26398 0.0 0.0 112824 984 pts/1 S+ 14:21 0:00 grep --color=auto mysql
===============================================================================
步骤7.8:登录进去MySQL并且重新设置密码
[root@mysql_compile bin]# mysql -uroot -p'4eYt!x#hZk_U' #注:使用临时密码登录
mysql> #注:不重置密码 不让使用
mysql> alter user 'root'@'localhost' identified by 'Sanchuang123#'; #注:修改密码
mysql> quit;
Bye
[root@mysql_compile bin]# mysql -uroot -p'Sanchuang123#'
mysql>
mysql> set password='Sanchuang123#'; #注:修改密码 (第2种方法)
示例:修改密码 (2种方式)
mysql> alter user 'root'@'localhost' identified by 'Sanchuang123#';
mysql> set password='Sanchuang123#';
示例:shell脚本里如何对数据库进行操作
-e 后面接需要执行的sql语句 execute 执行
mysql> show databases; #注:交互式方式执行SQL语句
[root@mysql_compile bin]# mysql -uroot -p'Sanchuang123#' -e 'show databases' #注:非交互式方式执行SQL语句
rpm方式安装的mysql和编译安装的MySQL,在使用方面有差别吗?
答:mysql运行起来后,其实是一样的。在使用上是没有差别的,只是在安装上和功能开启上有点差异、日后运维在路径上有些差异
mysql的核心代码一样
1 .对用户来说,是没有差别的
2 .对运维人员来说:
1 .安装难度
2 .路径
3 .运维注意事项:路径
一键安装脚本
[root@mysql_compile ~]# vim onekey_install_mysql.sh
#/bin/bash
#author:cPen
#time:2021-02-11
#QQ:1533431376
#编译安装mysql 5.7.32
#os:centos7.8.2003
#下载mysql的源码包
yum install wget -y
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-community-5.7.32-1.el7.src.rpm
#假定mysql的源码包已经上传到linux服务器里的当前目录下
#安装解决软件依赖关系的包
yum install cmake ncurses-devel gcc gcc-c++ vim lsof bzip2 openssl-devel -y
#解压src的rpm包
rpm -ivh mysql-community-5.7.32-1.el7.src.rpm
#新建用户
useradd -r -s /sbin/nologin mysql
#新建数据目录
mkdir -p /data/mysql
#修改数据目录的拥有者为mysql
chown mysql:mysql /data/mysql
#进入/root/rpmbuild/SOURCES目录
cd /root/rpmbuild/SOURCES
#解压真正的源码包
tar xf mysql-5.7.32.tar.gz
tar xf boost_1_59_0.tar.bz2
#将boost包移动到mysql解压的包里
mv boost_1_59_0 mysql-5.7.32
#进入解压后的目录
cd mysql-5.7.32
#编译前的配置
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DMYSQL_USER=mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=boost_1_59_0
##编译,启动2个进程去编译,加快速度
make -j 2
#安装编译好的二进制文件到指定的目录 --> 复制当前目录下编译好的二进制文件到当时指定的目录
make install
#备份原来的/etc/my.cnf文件,然后清空这个文件,这个文件是mariadb的配置文件,不是mysql的
cp /etc/my.cnf /root/mysql.cnf.bak
>/etc/my.cnf
#进入编译安装好的mysql的目录 --> 安装目录,开始初始化操作,并且把临时密码保存到一个文件里,方便后面登录使用
#初始化操作,其实是MySQL会去创建很多必须要的文件,会消耗磁盘空间
cd /usr/local/mysql/bin/
#执行mysqld这个程序,初始化mysql,并且将日志和临时密码重定向到/root/temp_password.txt文件里
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql &>/root/temp_password.txt
#修改PATH变量,让Linux系统里有mysql相关的命令
PATH=$PATH:/usr/local/mysql/bin
#/etc/profile /etc/bashrc /root/.bashrc /root/.bash_profile
echo 'PATH=$PATH:/usr/local/mysql/bin' >>/etc/bashrc
#拷贝mysqld的程序文件到指定的目录,方便后面设置mysqld服务开机启动 --> mysqld服务的启动、停止、重启的脚本
cp ../support-files/mysql.server /etc/init.d/mysqld
#关闭防火墙和selinux
#关闭防火墙firewalld服务
service firewalld stop
#设置firewalld服务开机不启动
systemctl disable firewalld
#临时关闭selinux
setenforce 0
#永久修改selinux配置文件里的内容
sed -i 's/=enforcing/=disabled/g' /etc/selinux/config
#设置mysql开机启动
chkconfig mysqld on
#启动MySQL
service mysqld start
#登录进去MySQL并且重新设置密码Sanchuang123#
#从保存的临时密码文件里,截取出临时密码,赋值给一个变量temp_pwd
temp_pwd=$(cat /root/temp_password.txt |tail -1|awk '{print $11}')
#给MySQL设置密码为Sanchuang123#
mysql -uroot -p$temp_pwd --connect-expired-password -e "set password='Sanchuang123#'"
echo 'onekey install mysql success'
远程连接
如何在windows里去远程连接到linux里的MySQL里?
SQLyog:是一个在windows里远程连接linux里的MySQL的工具
navicat:是一个在windows里远程连接linux里的MySQL的工具
MySQL客户端工具?
1 .mysql命令
[root@mysql_rpm ~]# mysql -h 192.168.1.11 -ucPen -p'Sanchuang123#' -P 3306
2 .SQLyog
3 .navicat
4 .workbench
等
============================================================================================
步骤:需要关闭安全工具
安全工具
1 .selinux
2 .firewalld 防火墙
[root@mysql_rpm ~]# getenforce #注:查看selinux的状态
Enforcing #注:强制执行的
[root@mysql_rpm ~]# setenforce 0 #注:临时关闭selinux
[root@mysql_rpm ~]# getenforce
Permissive #注:表示selinux已经不在限制访问
[root@mysql_rpm ~]# service firewalld stop #注:关闭firewalld服务
============================================================================================
步骤:新建一个可以远程登录到MySQL里的用户(授权语句)
[root@mysql_rpm ~]# mysql -uroot -p'Sanchuang123#'
mysql> grant all on *.* to 'cPen'@'192.168.1.3' identified by 'Sanchuang123#';
grant 是授权的命令
all 代表所有的权利,具体:select 、insert 、update、delete等操作
on *.* 代表所有的库里所有的表 --> 你可以操作任何库里的任何表 前面*代表库 后面*代表表
to 'cPen'@'192.168.1.3' 给用户cPen,但是cPen只能从192.168.1.3这台主机登录
identified by 'Sanchuang123#' 设置密码
#效果:SQLyog客户端可以远程连接
#注:授权的ip地址 是客户端的ip地址
192.168.1.3是写客户机 (windows)的ip地址
============================================================================================
mysql> grant all on *.* to 'jack'@'%' identified by 'Sanchuang123#';
'jack'@'%' 表示jack这个用户可以从任何一台电脑登录MySQL
% 是通配符,代表任意地址的意思
#注:* 被授权的用户jack 没有给其他用户授权的权利
root@localhost
--> 这个用户是只是允许在本机登录到MySQL里的,其他的机器上是登录不了的
--> 这个用户的权利非常大
localhost 本地主机
mysql里的完整的用户名
用户名@主机名(可以是名字也可以是ip)
@后面的名字或者ip是mysql在登录的时候,会检查你从哪里登录过来的
localhost 表示从本地登录的
cPen@192.168.1.3 表示cPen这个用户可以从192.168.1.3这台主机登录到MySQL里
库和表的关系?
库里面存放表 --> 表和库都理解为一个容器,用来装数据
mysql里可以创建很的库,一个库里可以创建很多表
mysql> create database sanchuang; #注:创建一个叫sanchuang的库
mysql> show databases;
+--------------------+
| Database |
| ……………………… |
| sanchuang |
| ……………………… |
5 rows in set (0.00 sec)
mysqld_safe 和 mysqld 这两个进程的关系?
答:父子进程
mysqld 是子进程,是工作进程
mysqld_safe 是父进程,管理进程 对mysqld进行监控和管理的,一旦监控到mysqld进程挂了,马上启动一个新的mysqld进程 #注:kill -9 pid号 强制杀死进程信号
示例:查看父子进程的命令
--------------------------------------------------------------------------------------------
ps -ef ;pstree
[root@mysql_compile ~]# ps -ef #注:PPID 父进程号;PID 进程号
UID PID PPID C STIME TTY TIME CMD
root 26630 1 0 14:24 pts/1 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/mys
mysql 26717 26630 0 14:24 pts/1 00:00:01 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir
ppid 表示父进程的进程号 parent 父母
pid 表示进程号
--------------------------------------------------------------------------------------------
[root@mysql_compile ~]# yum install psmisc -y
[root@mysql_compile ~]# pstree
systemd─┬─NetworkManager─┬─dhclient
│ └─2*[{NetworkManager}]
├─mysqld_safe───mysqld───27*[{mysqld}]
[root@mysql_compile ~]# pstree -p #注:-p 可以显示pid号
systemd(1)─┬─NetworkManager(752)─┬─dhclient(879)
├─mysqld_safe(26630)───mysqld(26717)─┬─{mysqld}(26718)
│ ├─{mysqld}(26719)
mysql 单进程 多线程
mysql在运行的时候,是一个进程里启动很多线程的
一个线程接待一个mysql的连接
[root@mysql_compile ~]# ps aux|grep mysqld
root 26630 0.0 0.0 11824 1596 pts/1 S 14:24 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/mysql_compile.pid
mysql 26717 0.0 4.3 1601452 168772 pts/1 Sl 14:24 0:02 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=mysql_compile.err --pid-file=/data/mysql/mysql_compile.pid
root 26808 0.0 0.0 112824 984 pts/1 S+ 15:47 0:00 grep --color=auto mysqld
--pid-file=/data/mysql/localhost.localdomain.pid 记录mysqld进程的pid号
--datadir=/data/mysql 数据目录的路径
--basedir=/usr/local/mysql mysql的安装路径
--plugin-dir=/usr/local/mysql/lib/plugin mysql的插件存放的目录
--user=mysql 启动mysql的用户的名字
--log-error=localhost.localdomain.err mysql的错误日志的路径 --> 存放在数据目录下的
#注:yum(rpm)安装只有mysqld进程,没有mysqld_safe进程;编译安装 2个进程:mysqld、mysqld_safe