百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

MySQL简易入门教程_mysql入门很简单 视频

wptr33 2025-02-17 14:17 20 浏览

阿铭linux近16年的IT从业经验,6年+鹅厂运维经验,6年+创业公司经验,熟悉大厂运维体系,有从零搭建运维体系的实战经验。关注我,学习主流运维技能,让你比别人提升更快,涨薪更多!

16.1 MySQL简介

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型和大型网站的开发都选择 MySQL 作为网站数据库。

16.2 MySQL版本

MySQL分社区版和商业版,社区版也就是开源版本,完全免费,而商业版要比社区版多了一些商业定制功能,需要收费。而本教程中介绍的是社区版。

目前MySQL社区版有两个主流活跃版本:5.7和8.0。据我观察,MySQL每隔3个月就会发一个小版本,更新迭代速度非常快。

截至阿铭发表此文章时,5.7最新版本为5.7.40,而8.0最新版本为8.0.31。由于个别应用开发环境使用的是5.7.x,所以我们只能使用5.7.x版本的MySQL。如果没有特殊要求,一定要用8.0,因为8.0版本的MySQL要比5.7快不少。

本教程中,阿铭使用的是8.0.31。5.7版本和8.0版本在使用上稍有差异,但差异不太大。

16.3 MySQL安装(Centos/Rocky/Ubuntu都一样)

1)下载

cd  /usr/local
curl -O https://cdn.mysql.com/Downloads/MySQL-8.0/mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz

2)解压

tar Jxf mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz
ln -s mysql-8.0.31-linux-glibc2.12-x86_64 mysql

3)创建用户

useradd -s /sbin/nologin  mysql

4)创建数据目录

mkdir -p /data/mysql
chown -R mysql:mysql /data/mysql

5)定义配置文件

vi  /etc/my.cnf  #写入如下内容
[mysql]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
user = mysql
port = 3306
basedir = /usr/local/mysql
datadir = /data/mysql
socket = /tmp/mysql.sock
pid-file = /data/mysql/mysqld.pid
log-error = /data/mysql/mysql.err

6)安装依赖

##Rocky / CentOS
yum install -y ncurses-compat-libs-6.1-9.20180224.el8.x86_64  libaio-devel
## Ubuntu
sudo  apt install  libaio-dev libtinfo5

7)初始化

/usr/local/mysql/bin/mysqld --console --initialize-insecure --user=mysql   ## initialize-insecure使用空密码

8)启动

vi /usr/lib/systemd/system/mysqld.service  #写如下内容
[Unit]
Description=MYSQL server
After=network.target
[Install]
WantedBy=multi-user.target
[Service]
Type=forking
TimeoutSec=0
PermissionsStartOnly=true
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --daemonize $OPTIONS
ExecReload=/bin/kill -HUP -$MAINPID     #这里-HUP可以是改成-s HUP,就变成强制杀进程,有需要可以改,下面也一样
ExecStop=/bin/kill -QUIT $MAINPID        #-s QUIT是强制杀进程
KillMode=process
LimitNOFILE=65535
Restart=on-failure
RestartSec=10
RestartPreventExitStatus=1
PrivateTmp=false

重新加载并启动服务

sudo systemctl daemon-reload
sudo systemctl enable mysqld
sudo systemctl start mysqld

9)配置环境变量

vi  /etc/profile  #最后面增加下面一行内容
export PATH=$PATH:/usr/local/mysql/bin

然后执行下面命令,使其生效

sudo source  /etc/profile

10)设置密码

mysqladmin -uroot  password  'your_new_passwd'


16.4 重置MySQL root密码

MySQL root为管理员用户,如果root用户密码忘记,我们是有方法来重置的。

修改配置文件

vi /etc/my.cnf  #增加skip-grant-tables

重启mysql服务

systemctl  restart mysqld

登录MySQL

mysql -uroot

在MySQL命令行里执行:

mysql> use mysql;
mysql> UPDATE user SET authentication_string="" WHERE user="root";  ##这里就是要删除掉原来密码

再次修改配置文件

 vi /etc/my.cnf  #删除skip-grant-tables 参数

重启服务

systemctl restart mysqld

再次登录MySQL

mysql -uroot

在MySQL命令行里,重置密码

mysql> use mysql; 
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Aminglinux.com';
mysql> flush privileges;


16.5 连接MySQL

1)连接本机的MySQL

mysql -uroot -pAminglinux.com #-p后面跟密码,如果有特殊符号要带单引号,-p后面不用带空格

2)连接远程机器

 mysql -uroot -pAminglinux.com -h127.0.0.1 -P3306 #-P后面跟端口号

3)使用socket文件连接(本地)

mysql -uroot -pAminglinux.com -S/tmp/mysql.sock #-S后面g跟socket文件路径

4)直接在shell里运行MySQL命令

mysql -uroot -pAminglinux.com -e "show databases" #-e后面跟要运行的命


16.6 MySQL常用命令

1)查询库

mysql> show databases;

2)切换库

mysql> use mysql;

3)查看库里的表

mysql> show tables;

4)查看表里的字段

mysql> desc tb_name;

5)查看建表语句

show create table tb_name\G

6)查看当前用户

mysql> select user();

7)查看当前使用的数据库

mysql> select database();

8)创建库

mysql> create database db1;

9)创建表

mysql> use db1; create table t1(`id` int(4), `name` char(40));

10)查看当前数据库版本

mysql> select version();

11)查看数据库状态

mysql> show status;

12)查看各参数

mysql> show variables; #查看所有参数
mysql> show variables like 'max_connect%'; #过滤关键词

13)修改参数

mysql> set global max_connect_errors=1000; #设置指定参数

14)查看队列

mysql> show processlist; 
mysql> show full processlist; #显示的更全


16.7 MySQL创建用户和授权

1)创建用户,客户端允许为所有

mysql> create user 'user1'@'%' identified by 'Abc.123.com';

2)授权所有权限,所有库,所有表

mysql> grant all on *.* to 'user1' ;#all表示所有权限(比如,select/update/insert/delete等全部权限),第一个*表示所有库,第二个*表示所有表

3)创建用户,客户端允许某个IP段

mysql> create user 'user2'@'192.168.133.%' identified by 'passwd';

4)授权指定权限

mysql> grant SELECT,UPDATE,INSERT on db1.* to 'user2'@'192.168.133.1';

5)查看授权情况

mysql> show grants;
mysql> show grants for user2@192.168.133.1;


16.8 常用sql语句

SQL是关系型数据库的核心,除了MySQL外,其它关系型数据库也是用这些SQL。下面阿铭就给大家列几个最常用的SQL命令。

mysql> select count(*) from mysql.user; #查表的行数
mysql> select * from mysql.db; #查表的所有内容
mysql> select db from mysql.db; #查看db表里db列内容
mysql> select db,user from mysql.db; #查看多列
mysql> select * from mysql.db where host like '192.168.%'; #查看表内容,设定条件
mysql> insert into db1.t1 values (1, 'abc'); #插入数据
mysql> update db1.t1 set name='aaa' where id=1; #插入数据,带条件
mysql> truncate table db1.t1; #清空表
mysql> drop table db1.t1; #删除表
mysql> drop database db1; #删除库


16.9 mysql数据库备份和恢复

1)备份库

mysqldump -uroot -pAminglinux.com mysql > /tmp/mysql.sql

2)恢复库

mysql -uroot -pAminglinux.com mysql < /tmp/mysql.sql

3)备份表

mysqldump -uroot -pAminglinux.com mysql user > /tmp/user.sql

4)恢复表

mysql -uroot -pAminglinux.com mysql < /tmp/user.sql

5)备份所有库

mysqldump -uroot -p -A >/tmp/123.sql

6)备份指定库

mysqldump -uroot -p -B db1 db2 > /tmp/db1_db2.sql

7)只备份表结构

mysqldump -uroot -pAminglinux.com -d mysql > /tmp/mysql.sql

相关推荐

MySQL进阶五之自动读写分离mysql-proxy

自动读写分离目前,大量现网用户的业务场景中存在读多写少、业务负载无法预测等情况,在有大量读请求的应用场景下,单个实例可能无法承受读取压力,甚至会对业务产生影响。为了实现读取能力的弹性扩展,分担数据库压...

Postgres vs MySQL_vs2022连接mysql数据库

...

3分钟短文 | Laravel SQL筛选两个日期之间的记录,怎么写?

引言今天说一个细分的需求,在模型中,或者使用laravel提供的EloquentORM功能,构造查询语句时,返回位于两个指定的日期之间的条目。应该怎么写?本文通过几个例子,为大家梳理一下。学习时...

一文由浅入深带你完全掌握MySQL的锁机制原理与应用

本文将跟大家聊聊InnoDB的锁。本文比较长,包括一条SQL是如何加锁的,一些加锁规则、如何分析和解决死锁问题等内容,建议耐心读完,肯定对大家有帮助的。为什么需要加锁呢?...

验证Mysql中联合索引的最左匹配原则

后端面试中一定是必问mysql的,在以往的面试中好几个面试官都反馈我Mysql基础不行,今天来着重复习一下自己的弱点知识。在Mysql调优中索引优化又是非常重要的方法,不管公司的大小只要后端项目中用到...

MySQL索引解析(联合索引/最左前缀/覆盖索引/索引下推)

目录1.索引基础...

你会看 MySQL 的执行计划(EXPLAIN)吗?

SQL执行太慢怎么办?我们通常会使用EXPLAIN命令来查看SQL的执行计划,然后根据执行计划找出问题所在并进行优化。用法简介...

MySQL 从入门到精通(四)之索引结构

索引概述索引(index),是帮助MySQL高效获取数据的数据结构(有序),在数据之外,数据库系统还维护者满足特定查询算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构...

mysql总结——面试中最常问到的知识点

mysql作为开源数据库中的榜一大哥,一直是面试官们考察的重中之重。今天,我们来总结一下mysql的知识点,供大家复习参照,看完这些知识点,再加上一些边角细节,基本上能够应付大多mysql相关面试了(...

mysql总结——面试中最常问到的知识点(2)

首先我们回顾一下上篇内容,主要复习了索引,事务,锁,以及SQL优化的工具。本篇文章接着写后面的内容。性能优化索引优化,SQL中索引的相关优化主要有以下几个方面:最好是全匹配。如果是联合索引的话,遵循最...

MySQL基础全知全解!超详细无废话!轻松上手~

本期内容提醒:全篇2300+字,篇幅较长,可搭配饭菜一同“食”用,全篇无废话(除了这句),干货满满,可收藏供后期反复观看。注:MySQL中语法不区分大小写,本篇中...

深入剖析 MySQL 中的锁机制原理_mysql 锁详解

在互联网软件开发领域,MySQL作为一款广泛应用的关系型数据库管理系统,其锁机制在保障数据一致性和实现并发控制方面扮演着举足轻重的角色。对于互联网软件开发人员而言,深入理解MySQL的锁机制原理...

Java 与 MySQL 性能优化:MySQL分区表设计与性能优化全解析

引言在数据库管理领域,随着数据量的不断增长,如何高效地管理和操作数据成为了一个关键问题。MySQL分区表作为一种有效的数据管理技术,能够将大型表划分为多个更小、更易管理的分区,从而提升数据库的性能和可...

MySQL基础篇:DQL数据查询操作_mysql 查

一、基础查询DQL基础查询语法SELECT字段列表FROM表名列表WHERE条件列表GROUPBY分组字段列表HAVING分组后条件列表ORDERBY排序字段列表LIMIT...

MySql:索引的基本使用_mysql索引的使用和原理

一、索引基础概念1.什么是索引?索引是数据库表的特殊数据结构(通常是B+树),用于...