04_MySQL笔记-介绍-rpm安装/源码编译安装MySQL-远程连接


个人博客
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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mycpen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值