官方网站: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.7
MariaDB: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
//1、查询mysql-server并安装mysql软件
[root@localhost ~]# yum info mysql-server //查询mysql-server安装包
Name : mysql-server
Arch : x86_64
Version : 5.1.73
Release : 8.el6_8
Size : 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_8
Dependency 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 mysqld
mysqld 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@localhost ~]# chkconfig mysqld on
[root@localhost ~]# chkconfig --list mysqld
mysqld 0:off 1:off 2:on
3: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_logfile1
drwx------ 2 mysql mysql 4096 Nov 5 18:04 mysql
srwxrwxrwx 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.localdomain
mysql> status //查看系统的状态信息
Current database: //当前不在任何数据库里
Current user: root@localhost
//当前与数据库连接时的用户名 ,是MySQL账户自身的用户;我是在本机用root登录到数据库中
mysql> use mysql //切换到mysql数据库
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
mysql> status
Current database: mysql //当前在mysql数据库中
Current user: root@localhost
mysql> \s // \s也可以表示为status,是status的简写
mysql>quit //退出mysql客户端
2、centos7.x下安装mariadb-server服务:
//1、安装部署mariadb-server
[root@localhost ~]# yum install mariadb-server -y
Installing:
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/mysql
mariadb-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 mysqld
tcp LISTEN 0 50 *:3306 *:* users:(("mysqld",pid=115344,fd=14))
root@localhost ~]# pstree -p //mysql工作原理是基于单进程多线程
[root@localhost ~]# ll /var/lib/mysql/ //存放的就是数据库的列表
total 28700
drwx------ 2 mysql mysql 4096 Nov 5 21:56 mysql
srwxrwxrwx 1 mysql mysql 0 Nov 5 21:56 mysql.sock
drwx------ 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数据库mysqlclone
MariaDB [(none)]> show databases; //此时可以看到mysqlclone数据库
+--------------------+
| Database |
+--------------------+|
| mysql |
| mysqlclone
注:克隆技术
//此方法也可以用作数据库备份的时候方案,一种备份手段
//但要确保数据库的一致性,数据完整性,确保同一时间点的一个文件
3、mysql数据库的常用操作:
MariaDB [(none)]> use mysqlclone //use把当前访问的数据库切换到目标数据库
Database changed
MariaDB [mysqlclone]>
MariaDB [mysqlclone]> show tables; //查看这个数据库中有哪些表
MariaDB [mysqlclone]> select * from user; //查询user这个表里的内容;
MariaDB [mysqlclone]> select * from user\G //加\G表示横着往下写
MariaDB [mysqlclone]> drop database mysqlclone; //删掉数据库mysqlclone
Query OK, 24 rows affected (0.07 sec)
MariaDB [mysqlclone]> drop tables mysqlclone; //删掉数据库里的表
MariaDB [(none)]> system id
uid=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_installation
Enter 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 mysql
MariaDB [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协议管理mysqld
mysqlimport:数据导入工具
myIsam存储引擎的管理工具:
myisamchk:检查myisam库
myisampack:打包myisam表,只读
服务器端程序:
mysqld_safe
mysqld
mysqld_multi:多实例,示例:mysqld_multi --example
//常用操作:
[root@localhost ~]# ps -aux //可以查看到上面两个服务端程序
mysql 115182 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
mysql 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
//创建数据库:
MariaDB [(none)]> create database testdb;
MariaDB [(none)]> show databases;
| testdb |
MariaDB [(none)]> \! ls /var/lib/mysql //在MySQL数据库之下执行linux命令
testdb
MariaDB [(none)]> \! ls /var/lib/mysql/testdb
db.opt
//方法一:交互式的方法
[root@localhost ~]# cat > test.sql //准备配置文件
create database testdb2;
show databases;
^C
[root@localhost ~]# cat test.sql
create database testdb2;
show databases;
//方法二:以重定向的方式
[root@localhost ~]# mysql -uroot -p123456 <test.sql
//以重定向的方式去执行命令,相当于执行一个脚本;
Database
information_schema
mysql
performance_schema
testdb
testdb2
//方案三:以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.cnf
prompt=(\\u@\\h) [\\d]>\(root@localhost) [(none)]> //登录数据库查看状态
//方案三:
[root@localhost ~]# vim /etc/profile.d/mysql.sh
export 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 mysql
mysql>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/mysql
socket=/var/lib/mysql/mysql.sock
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid //进程配置地址
[root@localhost ~]# cat /var/run/mariadb/mariadb.pid
10682 //只要进程起来,就会生成一个进程文件
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 -verbose
mysqld --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.cnf
skip-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 = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
[root@localhost ~]# yum repolist //查看yum源中是否有软件包
[root@localhost ~]# yum install -y mariadb-server //我们默认是linux系统源里面有mariadb,
现在又配置一个mariadb源,系统默认会装最新版本的。
10.2.35-1.el7.centos mariadb