一、mysql/mariadb/yum安装:
1、概述:官方网站:
MySQL官网:https://www.mysql.com/mariadb官网:https://mariadb.com/
官方文档:
MySQL:https://dev.mysql.com/doc/Mariadb: https://mariadb.com/kb/en
版本演变:
MySQL:5.1(centos6.x)——>5.5——>5.6——>5.7MariaDB:5.5(centos7.x)——>10.0——>10.1——>10.2——>10.3
MySQL版本:
MySQL Community Server 社区版本,开源免费,但不支持官方技术支持。MySQL Enterprise Edition 企业版本,需付费可以使用30天。MySQL Cluster 集群版,开源免费,可将几个MySQL Server封装成一个server。MySQL Cluster CGE 高级集群版,需付费。
2、mariadb的安装方式:
源代码:编译安装
二进制格式的程序包,展开至特定路径,并经过简单配置后即可使用程序包管理器管理的程序包;
centos下安装mariadb官方手册: https://downloads.mariadb.org/mariadb/repositories/
二、mysql/mariadb.server安装教程:
1、centos6.5下安装mysql-server/yum安装
//1、查询mysql-server并安装mysql软件[root@localhost ~]# yum info mysql-server //查询mysql-server安装包Name : mysql-serverArch : x86_64Version : 5.1.73Release : 8.el6_8Size : 8.6 M//2、安装mysql-server程序[root@localhost ~]# yum install -y mysql-server//安装centos6.x里面自带mysql-server版本,若需要新版本,可以去配置yum源,下文有配置教程Installed:mysql-server.x86_64 0:5.1.73-8.el6_8Dependency Installed:mysql.x86_64 0:5.1.73-8.el6_8 perl-DBD-MySQL.x86_64 0:4.013-3.el6//3、查看mysql-server安装是否成功[root@localhost ~]# rpm -ql mysql-server/etc/rc.d/init.d/mysqld //启动文件/usr/libexec/mysqld //数据库的主程序、二进制程序/var/lib/mysql //将来存放用户数据的数据目录/var/log/mysqld.log //日志文件包/var/run/mysqld//4、设置程序密码安全[root@localhost ~]# mysql_secure_installation//5、设置开机自启动[root@localhost ~]# chkconfig --list mysqldmysqld 0:off 1:off 2:off 3:off 4:off 5:off 6:off[root@localhost ~]# chkconfig mysqld on[root@localhost ~]# chkconfig --list mysqldmysqld 0:off 1:off 2:on3:on 4:on 5:on 6:off//6、启动mysqld程序[root@localhost ~]# service mysqld start[root@localhost ~]# ss -tnl //查看它的端口号LISTEN 0 50 *:3306//7、查看mysql配置文件[root@localhost ~]# ll /var/lib/mysql/ //第一次启动的时候会生成数据库文件。total 20488-rw-rw---- 1 mysql mysql 10485760 Nov 5 18:04 ibdata1-rw-rw---- 1 mysql mysql 5242880 Nov 5 18:04 ib_logfile0-rw-rw---- 1 mysql mysql 5242880 Nov 5 18:04 ib_logfile1drwx------ 2 mysql mysql 4096 Nov 5 18:04 mysqlsrwxrwxrwx 1 mysql mysql 0 Nov 5 18:04 mysql.sock//mysql.sock主要用于本地通讯drwx------ 2 mysql mysql 4096 Nov 5 18:04 test[root@localhost ~]# date //通过时间可以看出来Thu Nov 5 18:07:13 CST 2020//8、利用mysql客户端工具去链接mysql数据库[root@localhost ~]# which mysql/usr/bin/mysql[root@localhost ~]# rpm -qf /usr/bin/mysql //属于哪个包mysql-5.1.73-8.el6_8.x86_64//9、mysql客户端下常用操作:[root@localhost ~]# mysql //默认是无密码登录,未设置密码默认无密码。Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.//输入“help;”或“\h”请求帮助。键入'\c'以清除当前输入语句。mysql> show databases; //查询当前系统中所有数据库列表+--------------------+| Database |+--------------------+| information_schema || mysql || test |+--------------------+3 rows in set (0.00 sec)mysql> system hostname //mysql下可以执行linux命令localhost.localdomainmysql> status //查看系统的状态信息Current database: //当前不在任何数据库里Current user: root@localhost//当前与数据库连接时的用户名 ,是MySQL账户自身的用户;我是在本机用root登录到数据库中mysql> use mysql //切换到mysql数据库Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -Amysql> statusCurrent database: mysql //当前在mysql数据库中Current user: root@localhostmysql> \s // \s也可以表示为status,是status的简写mysql>quit //退出mysql客户端
2、centos7.x下安装mariadb-server服务/yum安装:
//1、安装部署mariadb-server[root@localhost ~]# yum install mariadb-server -yInstalling:mariadb-server x86_64 1:5.5.65-1.el7 //服务器端包Installing for dependencies:mariadb x86_64 1:5.5.65-1.el7 //客户端包//2、查看mysql安装路径,及部署的版本[root@localhost bin]# which mysql/usr/bin/mysql[root@localhost bin]# rpm -qf /usr/bin/mysqlmariadb-5.5.65-1.el7.x86_64//3、登录mysql客户端[root@localhost ~]# mysql //服务没有启动;mysql.sock文件不会生成ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'[root@localhost ~]# rpm -ql mariadb-server //查看mariadb包含的包列表/usr/lib/systemd/system/mariadb.service //服务名,意外的我们后期操作时使用mariadb.service/var/lib/mysql/var/log/mariadb/var/log/mariadb/mariadb.log/var/run/mariadb//4、启动mariad.service[root@localhost ~]# systemctl start mariadb.service[root@localhost ~]# ss -tunlp |grep mysqldtcp LISTEN 0 50 *:3306 *:* users:(("mysqld",pid=115344,fd=14))root@localhost ~]# pstree -p //mysql工作原理是基于单进程多线程[root@localhost ~]# ll /var/lib/mysql/ //存放的就是数据库的列表total 28700drwx------ 2 mysql mysql 4096 Nov 5 21:56 mysqlsrwxrwxrwx 1 mysql mysql 0 Nov 5 21:56 mysql.sockdrwx------ 2 mysql mysql 4096 Nov 5 21:56 performance_schema //在内存里虚拟的数据库drwx------ 2 mysql mysql 6 Nov 5 21:56 test//5、mysql数据库一般操作;MariaDB [(none)]> show databases; //查看支持的数据库列表+--------------------+| Database |+--------------------+|| mysql |//利用复制的方法克隆一个数据库[root@localhost ~]# cd /var/lib/mysql/ //进入到mysql数据库列表文件夹[root@localhost mysql]# cp -a mysql mysqlclone //克隆一个mysql数据库mysqlcloneMariaDB [(none)]> show databases; //此时可以看到mysqlclone数据库+--------------------+| Database |+--------------------+|| mysql || mysqlclone注:克隆技术//此方法也可以用作数据库备份的时候方案,一种备份手段//但要确保数据库的一致性,数据完整性,确保同一时间点的一个文件
3、mysql数据库的常用操作:
MariaDB [(none)]> use mysqlclone //use把当前访问的数据库切换到目标数据库Database changedMariaDB [mysqlclone]>MariaDB [mysqlclone]> show tables; //查看这个数据库中有哪些表MariaDB [mysqlclone]> select * from user; //查询user这个表里的内容;MariaDB [mysqlclone]> select * from user\G //加\G表示横着往下写MariaDB [mysqlclone]> drop database mysqlclone; //删掉数据库mysqlcloneQuery OK, 24 rows affected (0.07 sec)MariaDB [mysqlclone]> drop tables mysqlclone;//删掉数据库里的表MariaDB [(none)]> system iduid=0(root) gid=0(root) groups=0(root)MariaDB [(none)]> select user(); //查看当前登录的用户MariaDB [mysql]> select user,password,host from user; //查看服务器中创建的用户信息+------+----------+-----------------------+| user | password | host |+------+----------+-----------------------+| root | | localhost | //密码是空的| root | | localhost.localdomain || root | | 127.0.0.1 || root | | ::1 || | | localhost || | | localhost.localdomain |+------+----------+-----------------------+6 rows in set (0.00 sec)
4、设置mysql数据库的密码安全:
//1、执行系统自带的安全脚本[root@localhost ~]# which mysql_secure_installation/usr/bin/mysql_secure_installation[root@localhost ~]# mysql_secure_installationEnter current password for root (enter for none): //输入当前root账号的口令,没有口令直接回车Set root password? [Y/n] y //是否设置root账号的密码New password: //新密码Re-enter new password: //再次输入密码Remove anonymous users? [Y/n] y //是否删除匿名账号Disallow root login remotely? [Y/n] n //是否精致root账号远程登录Remove test database and access to it? [Y/n] y //是否删除测试数据库Reload privilege tables now? [Y/n] //加载特权表为的就是让你刚才的设置生效[root@localhost ~]# mysql -uroot -p123456 //登录mysql数据库MariaDB [(none)]> use mysqlMariaDB [mysql]> select user,host,password from user; //mysql数据库中查看用户的信息表+------+-----------------------+-------------------------------------------+| user | host | password |+------+-----------------------+-------------------------------------------+| root | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 || root | localhost.localdomain | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 || root | 127.0.0.1 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 || root | ::1 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |+------+-----------------------+-------------------------------------------+4 rows in set (0.00 sec)注://mysql下用户名是有两部分组成;user=username@host “ root | localhost ” 这是一个账号;// host表示你从那台电脑上登录;// 127.0.0.1 默认情况下登录mysql主机的ip地址,默认情况下不允许远程登录。// 上面的4个账号都是我们本机的,远程主机是连不上来的。// 远程主机想连到这台服务器的mysql数据库,[root@localhost ~]# mysql -uroot -p123456 -h 192.168.1.58//此时还是连不了,需要在mysql服务器上授权
5、mariadb客户端程序常用操作:
客户端程序:
mysql:交互式的CLI工具mysqldump:备份工具,基于MySQL协议向MySQLd发起查询请求,并将查得的所有数据转换成insert等写操作语句保存文本文件中。mysqladmin:基于mysql协议管理mysqldmysqlimport: 数据导入工具
mylsam存储引擎的管理工具:
myisamchk:检查myisam库myisampack:打包myisam表,只读
服务器端程序:
mysqld_safemysqldmysqld_multi:多实例,示例:mysqld_multi --example
//常用操作:[root@localhost ~]# ps -aux //可以查看到上面两个服务端程序mysql 115182 /bin/sh /usr/bin/mysqld_safe --basedir=/usrmysql 115344 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql[root@localhost ~]# getent passwd mysql //查看mysql的信息mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin // /var/lib/mysql它的家目录;[root@localhost ~]# rpm -q --scripts mariadb-server //查看它安装程序的时候以什么方式[root@localhost ~]# which mysqld_multi //查看该程序/usr/bin/mysqld_multi[root@localhost ~]# rpm -qf /usr/bin/mysqld_multi //此程序实现多实例,mariadb-server-5.5.65-1.el7.x86_64
5.1、用户账号:
mysql用户账号由两部分组成:‘USERNAME'@HOST';说明:HOST限制此用户可通过哪些远程主机连接MySQL服务器支持使用通配符:%匹配任意长度的任意字符172.16.0.0/255.255.0.0或172.16.%.%; 匹配任意单个字符
5.2、MySQL客户端使用模式:
交互式模式:可运行命令有两类:客户端命令:\h:help \u:use \s:status \!:system //MySQL客户端自身的命令,就是在数据库中 \h或者\help可以查询到的命令,都属于客户端命令,不需要加分号。服务器端命令:SQL,需要语句结束符; //服务器端命令需要加分号。脚本模式:mysql -uUSERNAME -PASSWORD < /path/somefile.sqlmysql> source /path/from/somefile.sql
//创建数据库:MariaDB [(none)]> create database testdb;MariaDB [(none)]> show databases;| testdb |MariaDB [(none)]> \! ls /var/lib/mysql //在MySQL数据库之下执行linux命令testdbMariaDB [(none)]> \! ls /var/lib/mysql/testdbdb.opt//方法一:交互式的方法[root@localhost ~]# cat > test.sql //准备配置文件create database testdb2;show databases;^C[root@localhost ~]# cat test.sqlcreate database testdb2;show databases;//方法二:以重定向的方式[root@localhost ~]# mysql -uroot -p123456 <test.sql//以重定向的方式去执行命令,相当于执行一个脚本;Databaseinformation_schemamysqlperformance_schematestdbtestdb2//方案三:以source命令去创建MariaDB [(none)]> source test.sql+--------------------+| Database |+--------------------+| testdb || testdb2 || testdb3 |+--------------------+6 rows in set (0.00 sec)
5.3、mariadb服务器提示符更改
//mariadb服务器提示符更改://方案一:MariaDB [(none)]> prompt \u@[\D] \r:\m:\s-> //更改当前的用户提示信息;一次性的,重新登入会丢失PROMPT set to '\u@[\D] \r:\m:\s->'root@[Fri Nov 6 21:40:24 2020] 09:40:24->//若想长期保存,需要保存到配置文件中。//方案二:[root@localhost ~]# ls /etc/my.cnf.d/client.cnf //针对全局的配置mysql-clients.cnf //针对MySQL这个数据库配置server.cnf //针对服务器的配置[root@localhost ~]# vim /etc/my.cnf.d/mysql-clients.cnfprompt=(\\u@\\h) [\\d]>\\(root@localhost) [(none)]> //登录数据库查看状态//方案三:[root@localhost ~]# vim /etc/profile.d/mysql.shexport MYSQL_PS1="(\u@\h) [\d]> "[root@localhost ~]# . /etc/profile.d/mysql.sh(root@localhost) [(none)]>
5.4、MySQL客户端常用选项:
MySQL客户端可用选项:-A --no-auto-rehash 禁止补全-u --user= 用户名,默认是root-h -- host= 服务器主机,默认为localhost-p --password= 用户密码,建议使用-p默认为空密码-P --port= 服务器端口,-S --sockt= 指定连接socket文件路径-D --database= 指定默认数据库-C --compress= 启用压缩-e --“SQL”= 执行SQL命令-V -- version= 显示版本信息-v --verbose= 显示详细信息--prin-defaults 获取程序默认使用的配置(root@localhost) [(none)]> \s //可以查看到当前数据库sock文件的地址UNIX socket: /var/lib/mysql/mysql.sock[root@localhost ~]# mysql -uroot -p123456 -D testdb //登录时可以直接指定到testdb数据库中-D选项(root@localhost) [testdb]>[root@localhost ~]# mysql -uroot -p123456 -e "show databases;" //在登录的时候执行命令 -e选项+--------------------+| testdb2 || testdb3 |+--------------------+[root@localhost ~]# mysql -uroot -p123456 -V //查看版本信息mysql Ver 15.1 Distrib 5.5.65-MariaDB, for Linux (x86_64) using readline 5.1
6、mysql.sock文件信息:
socket地址:服务器监听的两种socket地址:ip socket:监听在tcp的3306端口,支持远程通信unix sock:监听在sock文件上,仅支持本机通讯 如:/var/lib/mysql/mysql.sock; 说明:host为localhost,127.0.0.1时自动使用Unix sock执行命令:运行MySQL命令:默认空密码登录mysql>use mysqlmysql>select use(); 查看当前用户mysql>SELECT User,Host,Password FROM user;登录系统: mysql -uroot -p客户端命令: 本地执行mysql > help每个命令都有完整形式和简写格式mysql> status 或 \服务器端命令: 通过mysql协议发往服务器执行并取回结果每个命令都必须结束符号;默认为分号SELECCT VERSION();
[root@localhost ~]# cat /etc/my.cnf[mysqld] //主要存放着我们服务器端的配置datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sock[mysqld_safe]log-error=/var/log/mariadb/mariadb.logpid-file=/var/run/mariadb/mariadb.pid //进程配置地址[root@localhost ~]# cat /var/run/mariadb/mariadb.pid10682 //只要进程起来,就会生成一个进程文件
7、服务器端配置:
服务器端(mysqld):工作特征有多种配置方式;1、命令行选项:2、配置文件,类ini格式3、集中式的配置,能够为mysql的个应用程序提供配置信息[mysqld] //服务器端配置[mysqld_safe] //服务器端配置[mysqld_multi] //多进程、多线程配置[mysql] //MySQL、数据库配置;客户端[mysqldump] //备份配置[server] //服务器端配置[client] //客户端配置格式:parameter = value说明:_和-相同0,OFF,TRUE意义相同,1,ON,FALSE意义相同。
7.1、配置文件:后面覆盖前面的配置文件,顺序如下:(从后向前面覆盖式)
[root@localhost ~]# /etc/my.cnf //Global选项;表示所有实例 ;我们一般写在此位置或者/etc/my.cnf.d下也可以,因为/etc/my.cnf包含/etc/my.cnf.d文件/etc/mysql/my.cnf //Global全局选项 全局性的设置SYSCONFDIR/my.cnf //Global选项$MYSQL_HOME/my.cnf //Server-specific 选项 特定服务器的设定--defaults-extra-file=path~/my.cnf // User-specific选项 特定用户下设定的//获取可用参数列表:mysqld --help -verbosemysqld --print-defaults 获取默认设置
8、Mariadb配置:侦听3306/tcp端口可以在绑定有一个或全部接口IP上,
vim /etc/my.cnf[mysqld]skip-networking=1 关闭网络连接(远程不可以连接,只能本地连接),只侦听本地客户端,所有和服务器的交互都通过一个socket实现,socket的配置存放在/var/lib/mysql/mysql.sock)可在/etc/my.cnf修改。[root@localhost ~]# vim /etc/my.cnfskip-networking=1 //在这个语句块里加上skip-networking=1重启服务[root@localhost ~]# ss -antl //查看此时找不到tcp的3306端口[root@localhost ~]# mysql -uroot -p123456 //还是可以连上数据库,因为此时它不走tcp的3306端口;//它走的是本地的sock文件,
三、在不同操作系统下,配置指定版本的mysql/mariadb程序:
根据官网教程,配置官网yum源地址:
1、源码包下载地址:
地址:https://downloads.mariadb.org/mariadb/10.2.35/ 选择你要安装的版本;

官方提供三种格式文件:
Source——源码Binaries——二进制Packages——rpm包(针对centos,Redhat,Ubuntu系列的)
2、Repository Configuration Tool.(存储库工具):
//直接告诉你配置教程;YUM仓库地址:https://downloads.mariadb.org/mariadb/repositories/#distro=CentOS&distro_release=centos7-amd64--centos7&mirror=ustc-hefei&version=10.2

3、安装配置:直接配置特定版本的yum源,直接安装此版本
[root@localhost ~]# vim /etc/yum.repos.d/base.repo[mariadb]name = MariaDBbaseurl = http://yum.mariadb.org/10.2/centos7-amd64gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDBgpgcheck=1[root@localhost ~]# yum repolist //查看yum源中是否有软件包[root@localhost ~]# yum install -y mariadb-server //我们默认是linux系统源里面有mariadb,现在又配置一个mariadb源,系统默认会装最新版本的。10.2.35-1.el7.centos mariadb
END
声明:JavaBBS论坛主要用于IT技术专题的交流学习,为开源技术爱好者提供广泛、权威的技术资料。若您在技术专题有更好的想法或者建议,欢迎交流!!!




推荐阅读
Recommended reading


JavaBBS
Git → https://www.javabbs.cn/git
JavaBBS大数据→ https://www.javabbs.cn/dsj
JavaBBS云存储→ https://www.javabbs.cn/ycc
JavaBBS数据库→ https://www.javabbs.cn/sjk
JavaBBS云计算→ https://www.javabbs.cn/yjs
JavaBBSIT.Log→ https://www.javabbs.cn/itl
JavaBBSNginx→ https://www.javabbs.cn/ngx
JavaBBSzabbix→ https://www.javabbs.cn/zbx
JavaBBSJavaSE→ https://www.javabbs.cn/jse JavaBBS社区文章→ https://www.javabbs.cn/bwz
JavaBBS社区资料→ https://www.javabbs.cn/bzl





