MySQL简易入门教程

描述

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_nameG

 

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

 

  审核编辑:汤梓红
 
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分