MySQL 安装和基本操作| 学习笔记

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 快速学习 MySQL 安装和基本操作

开发者学堂课程【Linux MySQL 服务器搭建与应用 MySQL 安装和基本操作】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/578/detail/7983


MySQL 安装和基本操作


内容介绍

一. MySQL

二. MariaDB


一. MySQL

1官方网址︰

https://www.mysql.com/

http://mariadb.org/

官方文档

https://dev.mysql.com/doc/

https://mariadb.com/kb/en/

版本演变∶

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

查看版本

[root@centos6 ~]yum info mysql-server

Version  :5.1.73

[root@centos7 ~]yum info mariadb-server

Version  :5.5.56


2MariaDB 的特性

(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)种 程序包管理器管理的程序包

[root@centos6 ~]yum install mysql-serve

查看文件:

[root@centos6 ~]#rpm -ql mysq1-server

服务脚本:/etc/rc.d/init.d/mysdld

数据库的主程序:/usr /libexec/mysqld

存放用户数据的数据库:/var /lib /mysql

数据库的使用

设置开机启动 [root@cenos6~]#chkconfig mysqld on

 [root@cenos6~]#ss -ntl ;service mysqld start

启动后3306端口就处于监听状态

之后用数据库客户端进行连接,第一次连接就会生成一些数据库文件。

[root@cenos6~]#ls /var/lib /mysql/

[root@cenos6~]#ll /var/lib/mysql/

其中 MySQL 主要用于本机通信,跨网络通信。

[root@centos6 ~]#rpm -ql /usr /bin/mysql

pack age /usr/bin/mysql is not installed

[root@centos6 ~]#rpm -qf /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

mysql>use mysql

stasts 命令

stasts (\s)get status information for the server

mysql>stastus

current datsbase :mysql

current user:root@localhost

root@localhost是 mysql 自身的用户,mysql 中也有个默认账号 root,即为mysql 账号的管理员,@后为主机名,表示该用户在哪台主机上登录。

exit命令 (\)exit mysql .same as equit

mysql>equit

centors7的安装

[root@centos7 ~]#yum install mariadb-server

因为有依赖性,所以安装了很多相关的包,其中有个 mariadb 包这既是客户端包,mariadb-server 是服务器包。

安装过程也会装上 mysql,mysql 就是在6上的一个安装工具。

查看 mysql 工具包

[root@centos7~]#which mysql

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/mysql/

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

Information-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

随便登录,设置很不安全。


4RPM 包安装 MySQL

RPM 包安装

CentOS 7 :安装光盘直接提供

mariadb-server 服务器包

mariadb 客户端工具包

CentOS 6

提高安全性

mysql_ secure_ installation

设置数据库管理员 root 口令

禁止 root 远程登录

删除 anonymous 用户帐号

删除 test 数据库

2.提高安全性

登录默认用 root 登录,

image.png

 

MariaDB[(none]>use mysql

Database changed

MariaDB[(mysql)]>show tables

User

MariaDB[(mysql)]> select *from user

列数太多挑选几个列来显示

MariaDB[(mysql)]>select user,password,host from user

因为密码都是空,所以可以随便登录,所以刚登陆必须采取措施来保证安全。

措施

MariaDB[(mysql)]>$ mysql-secure-installation

Enter current password foe root(enter for none):  

没有指令,所以点击回车

Set root password? [Y/N]输入 :y

New password:

Remove anonymous users? [Y/N]

是否删除匿名帐号?输入Y

Disallow root login remotely?[Y/N]输入 N

Remove test database and access to it?[Y/N]一般生产中都输入 Y

Relosd privilege tables now?[Y/N]Y

加载特权表

[wang@centors7~]$ MySQL

登录失败

指定用户名

[wang@centors7~]$MySQL -uxxx

[wang@centors7~]$ mysql -uroot -p

Enter password : 输入指定就可以登录

MariaDB[(none]>select user();

MariaDB[(none]>show databases

Databases

Information-schema

Mysql

Performance-schema

用户信心存在于 MySQL 数据库中,访问其中的表;

MariaDB[(none]>use mysql

MariaDB[(mysql)]>select 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

多实例

image.png

 

实际上很多程序都支持多实例:例如 nopatad

但并不是所有都支持多实例,比如加密软件,office 等

测试环节中多使用多实例,在一台电脑上装入多个 MySQLD


2、用户账号

(1).mysql 用户账号由两部分组成:

'USERNAME' @'HOST '

(2).说明:

HOST 限制此用户可通过哪些远程主机连接 mysql 服务器

支持使用通配符:

%匹配任意长度的任意字符

172.16.0.0/255.255.0.0或172.16.%.%

匹配任意单个字符


3Mysql 客户端

(1).mysql 使用模式:

(2).交互式模式:

可运行命令有两类:

客户端命令:

\h, help

\u,use

\s,status

\!,system

服务器端命令:

SQL,需要语句结束符;

(3).脚本模式:

mysql -uUSERNAME -pPASSWORD < /path/somefile.sql

mysql> source /path/from/somefile.sql

MariaDB[(none]>create database teatdb

MariaDB[(none)]>show databases

Database

Information -schema

Mysql

Performance -schema

Testdb

Mariadb[(none)>\! Ls /var/lib/mysql

Mariadb[(none)>\! Ls /var/lib/mysql\

Mariadb[(none)>\! Ls /var/lib/mysql\testdb\

Mariadb[(none)>\! Ls /var/lib/mysql\testdb

Mariadb[(none)>\! Ls /var/lib/mysql/testdb

Mariadb[(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

 MariaDB[(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


4Mysql 客户端

mysql 客户端可用选项:

-A, --no-auto-rehash 禁止补全

-U, --user= 用户名,默认为 root

-h, --host= 服务器主机,默认为 localhost

-p, --passowrd= 用户密码,建议使用 -p,默认为空密码

-P, --port= 服务器端口

-S, --socket= 指定连接  socket 文件路径

-D, --database= 指定默认数据库

-C, --compress 启用压缩

-eSQL“执行 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). -eSQL“执行 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获取默认设置


7MairaDB 配置

侦听 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端口,走的是本机文件,所以只能本机连接,有时暂时之需要本机连接,维护服务器可以使用该方法。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
138 6
|
2月前
|
安全 关系型数据库 MySQL
mysql8安装
本文介绍了在 CentOS 7 上安装 MySQL 5.7 的详细步骤,包括下载、环境准备、系统配置、安装过程及启动方法。首先通过wget下载MySQL压缩包并解压至指定目录,接着进行主机名修改、依赖安装、用户与用户组创建、ulimit配置等环境准备工作。随后,对操作系统环境进行调整,如文件句柄和进程数的设置、内核参数优化、SELinux和防火墙的关闭等。最后,完成MySQL的安装配置,创建数据和日志目录,初始化MySQL,并设置启动脚本和环境变量,确保MySQL能够正常运行。
80 4
|
4天前
|
关系型数据库 MySQL 数据库
docker高级篇(大厂进阶):安装mysql主从复制
docker高级篇(大厂进阶):安装mysql主从复制
51 24
|
2月前
|
安全 关系型数据库 MySQL
Linux下安装mysql8.0(以tar.xz包安装--编译安装)
通过上述步骤,您完成了从下载、编译、安装到配置MySQL 8.0的全过程。此过程虽然较为复杂,但提供了对MySQL安装环境的完全控制,有助于满足特定的部署需求。在实际操作中,根据具体的系统环境,可能还需调整部分步骤或解决未预见的依赖问题。始终参考官方文档和社区资源,保持安装过程与最新版本的兼容性。
1067 67
|
1月前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
54 4
|
2月前
|
关系型数据库 MySQL Linux
Docker安装Mysql5.7,解决无法访问DockerHub问题
当 Docker Hub 无法访问时,可以通过配置国内镜像加速来解决应用安装失败和镜像拉取超时的问题。本文介绍了如何在 CentOS 上一键配置国内镜像加速,并成功拉取 MySQL 5.7 镜像。
586 2
Docker安装Mysql5.7,解决无法访问DockerHub问题
|
2月前
|
SQL 关系型数据库 MySQL
Mysql学习笔记(三):fetchone(), fetchmany(), fetchall()详细总结
MySQL中用于数据检索的`fetchone()`, `fetchmany()`, `fetchall()`函数的功能、SQL语句示例和应用场景。
80 3
Mysql学习笔记(三):fetchone(), fetchmany(), fetchall()详细总结
|
2月前
|
SQL Ubuntu 关系型数据库
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
本文为MySQL学习笔记,介绍了数据库的基本概念,包括行、列、主键等,并解释了C/S和B/S架构以及SQL语言的分类。接着,指导如何在Windows和Ubuntu系统上安装MySQL,并提供了启动、停止和重启服务的命令。文章还涵盖了Navicat的使用,包括安装、登录和新建表格等步骤。最后,介绍了MySQL中的数据类型和字段约束,如主键、外键、非空和唯一等。
77 3
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
102 3
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。
本文介绍了在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。内容涵盖准备工作、下载源码、编译安装、配置服务、登录设置及实践心得,帮助读者根据需求选择最适合的安装方法。
89 2