本文共 20570 字,大约阅读时间需要 68 分钟。
MySQLMySQL是一个数据库软件 数据库 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 osx86是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出错
步骤:
1 .上传文件到Linux里 2 .解压 3 .使用yum命令安装 4 .启动mysql服务 5 .查看进程和端口号 6 .登录 --> 查看临时密码 --> 修改临时密码 7 .查看数据库里有哪些库
===============================================================================步骤1:将windows里下载的安装包上传到linux系统里[root@mysql_rpm ~]# lsanaconda-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 ~]# lsanaconda-ks.cfgmysql-community-embedded-compat-5.7.32-1.el7.x86_64.rpmmysql-5.7.32-1.el7.x86_64.rpm-bundle.tarmysql-community-embedded-devel-5.7.32-1.el7.x86_64.rpmmysql-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 mysqldtcp6 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 -pEnter password: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)mysql是一个客户端的命令,用来登录mysql使用的-u 指定登录用户 user-p 指定密码 passwordroot 这个root不是我们linux系统里的root是MySQL软件里的超级用户,碰巧和linux系统里的超级用户同名
============================================================================================步骤:获得MySQL的临时密码 获得MySQL的临时密码,临时密码是MySQL在第一次启动的时候,临时产生的,为了安全性考虑 存放在MySQL的日志文件里 /var/log/mysqld.log temporary password 临时密码 是随机产生的,不同的电脑不一样[root@mysql_rpm ~]# cat /var/log/mysqld.log |grep temp2021-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 #注:退出MySQLBye[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-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 ~]# lsanaconda-ks.cfg mysql-community-5.7.32-1.el7.src.rpmmysql-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 ~]# lsanaconda-ks.cfg mysql-community-5.7.32-1.el7.src.rpm rpmbuild[root@mysql_compile ~]# cd rpmbuild/ #注:rpmbuild 目录一定会在用户的家目录下[root@mysql_compile rpmbuild]# lsSOURCES SPECS[root@mysql_compile rpmbuild]# cd SOURCES/ #注:进入存放源码包的目录[root@mysql_compile SOURCES]# lsboost_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]# lsboost_1_59_0 filter-provides.sh mysql-5.6.45.tar.gz mysql-5.7.32.tar.gzboost_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 installmake -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#修改数据目录的拥有者为mysqlchown 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/mysql2021-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.shroot 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.pidmysql 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.pidroot 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 -ywget 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#修改数据目录的拥有者为mysqlchown mysql:mysql /data/mysql#进入/root/rpmbuild/SOURCES目录cd /root/rpmbuild/SOURCES#解压真正的源码包tar xf mysql-5.7.32.tar.gztar 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_profileecho '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#临时关闭selinuxsetenforce 0#永久修改selinux配置文件里的内容sed -i 's/=enforcing/=disabled/g' /etc/selinux/config#设置mysql开机启动chkconfig mysqld on#启动MySQLservice mysqld start#登录进去MySQL并且重新设置密码Sanchuang123##从保存的临时密码文件里,截取出临时密码,赋值给一个变量temp_pwdtemp_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 CMDroot 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/mysmysql 26717 26630 0 14:24 pts/1 00:00:01 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dirppid 表示父进程的进程号 parent 父母pid 表示进程号--------------------------------------------------------------------------------------------[root@mysql_compile ~]# yum install psmisc -y[root@mysql_compile ~]# pstreesystemd─┬─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 mysqldroot 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.pidmysql 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.pidroot 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
转载地址:http://ujtuk.baihongyu.com/