开发者学堂课程【Linux MySQL 服务器搭建与应用: MySQL 安装和基本操作】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/578/detail/7983
MySQL 安装和基本操作
内容介绍
一. MySQL
二. MariaDB
一. MySQL
1、官方网址︰
官方文档
版本演变∶
MySQL: 5.1 -->5.5 --> 5.6 --> 5.7
MariaDB∶ 5.5 -->10.0-->10.1 -->10.2 --> 10.3
Centors6 上默认安装 MySQL: 5.1 centors7 上默认安装 MariaDB∶ 5.5
上面两个文档在遇到问题例如涉及到一些数据库的设置时,可以查询,mysql 的版本从5.1开始,早期是在公司里少数人使用,后来逐渐发展,mariaDB 的版本与mysql 如上所示,上下基本是对应的,例如
MySQL 的5.5跟 mariaDB 的5.5基本上是对应的,MySQL 的5.5基本上是跟mariaDB 的10.0相对应,两者变化功能基本上是相同的,MySQL 的人数相对于mariaDB 来说较多,但是一些比较大的平台,例如谷歌阿里等都比较支持mariaDB。
查看版本
[r
oot@centos6 ~]yum info mysql-server
V
ersion
:5.1.73
[r
oot@centos7 ~]yum info mariadb-server
Version :5.5.56
2、MariaDB 的特性
(1).插件式存储引擎:也称为“表类型”,存储管理器有多种实现版本,功能和特性可能均略有差别;用户可根据需要灵活选择, Mysql5.5.5 开始 innoDB 引擎是 MYSQL 默认引擎
MyISAM ==> Aria
InnoDB ==> XtraDB
(一般都选用)
(2) . 单进程,多线程
(3) . 诸多扩展和新特性
(4) . 提供了较多测试组件
(5) . 开源
3、安装 MariaDB
Mariadb 安装方式∶
(1)、源代码∶编译安装
(2)、二进制格式的程序包︰展开至特定路径,并经过简单配置后即可使用
(3)、程序包管理器管理的程序包
CentOS 安装光盘
项目官方︰
https://downloads.mariadb.org/mariadb/repositories/
(1)中下载解压缩放置目录下,因为源码编译需要指定安装路径。
(2)中二进制就是已经编译好的打包成文件,然后需要解包,解包时需要展开到特定路径,之后经过简单配置,就可以直接使用
(3)种 程序包管理器管理的程序包
[r
oot@centos6 ~]yum in
stall
mysql-serve
查看文件:
[r
oot@centos6 ~]#rpm -ql mysq1-server
服务脚本:/etc/rc.d/init.d/mysdld
数据库的主程序:/usr /libexec/mysqld
存放用户数据的数据库:/var /lib /mysql
数据库的使用
设置开机启动 [root@cenos6~]#chkconfig mysqld on
[r
oot@
cen
os6~]#ss -ntl ;service mysqld start
启动后3306端口就处于监听状态
之后用数据库客户端进行连接,第一次连接就会生成一些数据库文件。
[r
oot@
cen
os6~]#
ls
/var/lib /mysql/
[r
oot@
cen
os6~]#ll /var/lib/mysql/
其中 MySQL 主要用于本机通信,跨网络通信。
[
root@centos6 ~
]
#rpm -
q
l /usr /bin/mysql
pack age /usr/bin/mysql is not installed
[
root@centos6 ~
]
#rpm -
q
f /usr/bin/mysql
Mysql
-
5.1.73-8.e16- 8.x86- 64
Mysql>h
就可以得到帮助
查看是否有对应的数据库可以操作 myaql>show databases
可以查看当前所有的数据库,数据库当中又有若干张表。
System 命令
mysql> system hostname
centos6.localdomain
mysql>
\
!ls /l app
1s: cannot_access /app: No such fi1e or directory
mysql>\!1s / data
fstab Lost+found
mysq1>\! rm-f /data/*
rm: cannot remove `/data/1ost+found ' : Is a directorymysqi> ! rm -rf / data/
mysql>! 1s / data
ues
命令
use
(
\u)
use another database.takes database name as argument
m
ysql>use mysql
s
tasts
命令
s
tasts (
\s
)get status information for the server
mysql>stastus
c
urrent datsbase :mysql
current user:root@localhost
root@localhost
是 mysql 自身的用户,mysql 中也有个默认账号 root,即为mysql 账号的管理员,@后为主机名,表示该用户在哪台主机上登录。
e
xit
命令 (\)e
xit mysql .same as equit
mysql
>equit
centors7
上
的安装
[
root@centos7 ~
]
#yum inst
a
ll mariadb-server
因为有依赖性,所以安装了很多相关的包,其中有个 mariadb 包这既是客户端包,mariadb-server 是服务器包。
安装过程也会装上 mysql,mysql 就是在6上的一个安装工具。
查看 mysql 工具包
[root@centos7~]#which mysq
l
usr bin /myaql
[root@centos7~]#rpm -qf /usr/bin/mysql
mariadb-5.5.56-2.e17.x86_64
[rootacentos7~]#mysql
ERROR 2002(HYoo0): can't connect to local MysQL server through socket '/var/11b/mysql/mysql.soc ’(2)
[root@centos7 ~]#11/var/lib/mysql/mysql.sock
is: cannot access /var/1ib/mysql/mysql.sock: No such file or directory
[root@centos7 ~]#rpm -qi mariadb-server
启动服务
[root@centos7 ~]#systemctl start mariadb
[root@centos7 ~]#ss -utln
打开了3306端口
登录:
[root@centos7 ~]#mysql
[root@centos7~]#11/var/1ib/mysa4mY.i9.Vak/1ib/mysql/mysq1.sock
froot@centos7 ~〕#1s/var/lib/mysq
l
/
aria_ log.00000001 aria_log_contro1ibdata1 ib_logfile0 ib_logfilel mysql mysl.sck per
rrootacentos7~]#mysql
information_schemamysgl
performance_schematest
[root@centos7~]#11/var/lib/mysql/total 36892
[root@centos7~]#cd /var /lib /mysql
[root@centos7 mysql]#1s
[root@centos7~]#cp -a mysql mysqlclone
[root@centos7~]#11/var/lib/mysql/mysql.sock
[root@centos7~]#1s /var/lib/mysql
Mysql mysql.sock performance-schema tesk
[root@centos7~]#mysql
MariaDB[
(none
)]>show databases;
Databases
Mysql mysql.sock performance-schema tesk
I
nformation
-
schema
是一个虚拟的数据库,存在于内存之中。
存放数据库的列表
[root@centos7~]#
ll
/var/lib/mysql
[root@centos7~]#cd /var/lib/mysql/
利用复制方法复制文件夹生成数据库
[root@centos7 mysql]#ls
[root@centos7 mysql]#ll
[root@centos7 mysql]#cp -a mysql mysqlclone
[root@centos7 mysql]#ll
生成一个文件夹
mysqlclone
。
查看是否依此生成数据库
[root@centos7 mysql]#ls mysqlcolne/
[root@centos7 mysql]#mysql
MariaDB[
(none
)]>show databases
Mysqlcolone
需要备份时,拷贝文件夹即可,注意需保持时间一致性
方法:第一停止服务器
任何一个人都能连接数据库
[root@centos7 mysql]
su
– wang
MariaDB[
(none
)]>use mysqlclone
MariaDB[
(none
)]>show tables
MariaDB[
(none
)]>select*from user;\G
MariaDB[
(MySQL clone
)]>
show
database test
随便登录,设置很不安全。
4、RPM 包安装 MySQL
RPM 包安装
CentOS 7 :安装光盘直接提供
mariadb-server 服务器包
mariadb 客户端工具包
CentOS 6
提高安全性
mysql_ secure_ installation
设置数据库管理员 root 口令
禁止 root 远程登录
删除 anonymous 用户帐号
删除 test 数据库
2.提高安全性
登录默认用 root 登录,
M
ariaDB
[(none
)
]
>use mysql
D
atabase changed
M
ariaDB
[(
mysql)
]
>show tables
User
M
ariaDB
[(
mysql)
]
> select *from user
列数太多挑选几个列来显示
M
ariaDB
[(
mysql)
]
>select user,password,host from user
因为密码都是空,所以可以随便登录,所以刚登陆必须采取措施来保证安全。
措施
M
ariaDB
[(
mysql)
]
>
$
mysql-secure-installation
E
nter current password foe root(enter for none):
没有指令,所以点击回车
S
et
root password?
[
Y/N
]
输入 :y
N
ew password:
R
emove anonymous users
? [
Y
/
N
]
是否删除匿名帐号?输入Y
Di
sallow root login remotely?
[
Y/N
]
输入 N
R
emove test database and access to it?
[
Y/N
]
一般生产中都输入 Y
R
elosd privilege tables now?
[
Y/N
]
Y
加载特权表
[
wang@centors7~
]
$
MySQL
登录失败
指定用户名
[
wang@centors7~
]
$
MySQL
-
uxxx
[
wang@centors7~
]
$ mysql -uroot -p
Enter password : 输入指定就可以登录
M
ariaDB
[(none
)
]
>select user();
M
ariaDB
[(none
)
]
>show databases
Databases
Information-schema
Mysql
Performance-schema
用户信心存在于 MySQL 数据库中,访问其中的表;
M
ariaDB
[(none
)
]
>
use
mysql
M
ariaDB
[(
mysql)
]
>
s
elect user,host,password form user
[
wang@centos7 ~
]
$ user=username@host
所以上图中的 root 跟 localhost 连起来是一个用户名,user 和 host 共同组成账号。Host 为登陆的 ID 地址,所以默认状态下 MySQL 不支持远程登陆,利用上述方式实现了安全加强。
[
wang@centors7~
]
$
mysql
-secure-installation
是通用的,在嵾 tors6 跟7上都可以使用,起到安全加强作用,一般装数据库,都先运行一遍该脚本,以便安全。
远程连接
[
root@centors6 ~]#mysql -uroot -pcentos -h192.168.30.7
未授权,所以只能在特定的主机上连接。
二.MariaDB 程序
1.客户端程序:
mysql:交互式的 CLI 工具
mysqldump :备份工具,基于 mysql 协议向 mysqld 发起查询请求,并将查得的所有数据转换成 insert 等写操作语句保存文本文件中
mysqladmin :基于 mysql 协议管理 mysqld
mysqlimport :数据导入工具
MyISAM 存储引擎的管理工具:
myisamchk :检查 MyISAM 库
myisampack : 打包 MyISAM 表,只读
服务器端程序
mysqld_ safe
mysqld .
mysqld_ multi :多实例,示例: mysqld_ multi – example
[root
@centos7 mysql
]
#
pstree
-p
[root
@centos7 mysql
]
#ps-aux
[root
@centos7 mysql
]
#getent password
[root
@centos7 mysql
]
#getent password mysql
/var/lib/mysql 就是存放数据库的路径
[root
@centos7 mysql
]
#
ll
-d /var/lib/mysql/
所有者,所属者都是 MySQL,但并非完全拒绝别人访问,
[root
@centos7 mysql
]
#rpm -q –scripts mariadb -srever
-n; 不创建同名的组作为主组
-o;用户名不唯一
-m; 不创建家目录
多实例
[root
@centos7 mysql
]
#^c
[root
@centos7 mysql
]
#which mysql-multi
/
usr/bin/mysqld-multi
[root
@centos7 mysql
]
#rpm -qf mysqld -multi
多实例
实际上很多程序都支持多实例:例如 nopatad
但并不是所有都支持多实例,比如加密软件,office 等
测试环节中多使用多实例,在一台电脑上装入多个 MySQLD
2、用户账号
(1).mysql 用户账号由两部分组成:
'USERNAME' @'HOST '
(2).说明:
HOST 限制此用户可通过哪些远程主机连接 mysql 服务器
支持使用通配符:
%匹配任意长度的任意字符
172.16.0.0/255.255.0.0或172.16.%.%
匹配任意单个字符
3、Mysql 客户端
(1).mysql 使用模式:
(2).交互式模式:
可运行命令有两类:
客户端命令:
\h, help
\u,use
\s,status
\!,system
服务器端命令:
SQL,需要语句结束符;
(3).脚本模式:
①
mysq
l
-uUSERNAME -pPASSWORD < /path/somefile.sql
mysql> source /path/from/somefile.sql
M
ariaDB
[(none
)
]
>create database teatdb
M
ariaDB
[(
none)
]
>show databases
Database
Information -schema
Mysql
Performance -schema
Testdb
M
ariadb
[
(none)>\! Ls /var/lib/mysql
M
ariadb
[
(none)>\! Ls /var/lib/mysql\
M
ariadb
[
(none)>\! Ls /var/lib/mysql
\testdb
\
M
ariadb
[
(none)>\! Ls /var/lib/mysql\testdb
M
ariadb
[
(none)>\! Ls /var/lib/mysql/testdb
M
ariadb
[
(none)>\! Ls /var/lib/mysql/
[root
@centos7 mysql
]
#mysql -uroot -pcentos ^
c
[root
@centos7 mysql
]
#cd
[root
@centos7 ~
]
# cat >test.sql
Creat database testdb2;
Show satabases;
[root
@centos7 ~
]
#mysql -uroot -pcentos
Database
information_ schema
mysql
performance_ schema
testdb
testdb2
②
M
ariaDB
[(none
)
]
>source test .sql
Query ok
Testdb3
用法:
提示符更改
MariaDB [(none)]> prompt \u@[\D] \r:\m:\s->
[
root@centos7 ~] #mysq1 -uroot -pcentos
welcome to the MariaDB monitor;z Commands end with ; or \g.
Server version: 5.5.56-MariaDB MariaDB server
Copyright (C) 2000, 2017, Oracle, MariaDB corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement .
Help 中的命令为客户端命令,不加分号就可以使用,而例如 show 等命令是服务器端命令,需要加分号来使用,不加分号就该命令没有结束。
例如:prompt 使用
MariaDB L(none)]
>
prompt\u@[\D] \r:\m:\\s->
U 用户名;D 当前日期;r:\m:\\s;时间格式,更改提示符
改变配置文件来更改提示符
①
MariaDB [ (none
)]
MariaDB [ (none) ] >
MariaDB L(none)]> quit
[
root@centos7 ~] #vim/etc/my.cnf.d/client.cnf
[
root@centos7 ~] #
mysql
--prompt=”
(\u
@
/h
)
[\d]
>”-uroot -pcentos
②[
root@centos7 ~] #vim /etc/profile.d/mysql.sh
[
root@centos7 ~] #mysql -uroot -pcentos
4、Mysql 客户端
mysql 客户端可用选项:
-A, --no-auto-rehash 禁止补全
-U, --user= 用户名,默认为 root
-h, --host= 服务器主机,默认为 localhost
-p, --passowrd= 用户密码,建议使用 -p,默认为空密码
-P, --port= 服务器端口
-S, --socket= 指定连接 socket 文件路径
-D, --database= 指定默认数据库
-C, --compress 启用压缩
-e“SQL“执行 SQL 命令
-V, --version 显示版本
-V --verbose 显示详细信息
--print-defaults 获取程序默认使用的配置
(1
).-A
[
root@centos7 ~] #mysql
(
root@localhost)
[(none
)
]
>use testdb;
Database changed
(
root@localhost)
[(
mysql)
]
>show tables
(
root@localhost)
[(
mysql)
]
>select*from user
[
root@centos7 ~] #mysql -uroot -pcentos -A
(
2
).
-D, --database=
指定默认数据库
[
root@centos7 ~] #mysql -uroot -pcentos
[
root@centos7 ~] #mysql -uroot -pcentos -D testdb
(
3
). -e
“
SQL“
执行 SQL 命令
[
root@centos7 ~] #mysql -uroot -pcentos -e”show databases;”
[
root@centos7~]#mysql-uroot-pcentose”showdatabases;drop databases testdb3;drop databases testdb2”
(4). --print-defaults
获取程序默认使用的配置
[
root@centos7 ~] #mysql -uroot -pcentos --print-defaults
4、socket 地址
(1).服务器监听的两种 socket 地址:
ip socket: 监听在 tcp 的3306端口, 支持远程通信
unix sock: 监听在 sock 文件上,仅支持本机通信
如: /var/lib/mysql/mysql.sock)
说明: host 为 localhost,127.0.0.1时 自动使用 unix sock
执行命令。
圆圈为 socket 命令,同一台服务器使用。
(2).运行 mysq| 命令:默认空密码登录
mysql> use mysql
mysq|> select user();
查看当前用户
mysq|> SELECT User,Host,Password FROM user;
(3)登录系统: mysq| -uroot-p t
(4)客户端命令:本地执行
mysq|> help
每个命令都完整形式和简写格式
mysq|> status 或 \s
(5)服务端命令:通过 mysq| 协议发往服务器执行并取回结果
每个命令都必须命令结束符号;默认为分号
SELECT VERSION();
5、服务器端配置
1.服务器端 (mysqld) :工作特性有多种配置方式
命令行选项:
配置文件:类 ini 格式,
集中式的配置,能够为 mysql 的各应用程序提供配置信息
[mysqld]
[mysqld_ safe]
[mysqld_ multi]
[mysql]
[mysqldump]
[server]
[client]
格式: parameter = value
说明:—和-相同
0,OFF,FALSE 意义相同,1,ON,TRUE 意义相同0表示禁用
6、配置文件:
(1).后面覆盖前面的配置文件,顺序如下:
/etc/my.cnf Global 选项;所有实例,多个实例均有效;常用
/etc/mysql/my.cnf Global 全局选项 针对全局有效
SYSCONFDIR/my.cnf Global 选项;针对服务器有效
$MYSQL HOME/my.cnf Server-specific 选项;针对某个特定用户有效
--defaults- extra-file = path
~/.my.cnf User-specific 选项
[
root@centos7 ~]#cat /etc/my.cnf
[root@centos7 ~]#ls /etc/my.cnf.d/ 中找个文件都可以设置
[
root@centos7 ~]#
ps
aux
--basedir=/usr 加了一些参数选项,添加了一些变量的值
(2).获取可用参数列表:
mysqld --help -verbose
mysqld --print-defaults
获取默认设置
7、MairaDB 配置
侦听 3306/tcp 端口可以在绑定有-个或全部接口 IP.上
◆
vim /etc/my.cnf
[mysqld]
skip-networking=1 关闭网络连接,只侦听本地客户端,所有和服务器的交互都通过一个 socket 实现, socket 的配置存放在 /var/lib/mysql/mysql.sock ) 可在 /etc/my.cnf 修改
例如
[
root@centos7 ~]#vim /etc/my.cnf
rskip-networking=1
[
root@centos7 ~]#systemctl restart mariadb
[
root@centos7 ~]#ss -antl
[
root@centos7 ~]#mysql-uroot-pcentos
因为没有走3306端口,走的是本机文件,所以只能本机连接,有时暂时之需要本机连接,维护服务器可以使用该方法。