系列1-MYSQL基础入门-1

本文介绍了MySQL的不同发行版(官方、PerconaServer、MariaDB),重点比较了InnoDB和MyISAM存储引擎,讲解了安装过程及基本操作,包括连接、密码管理、用户权限设置和数据库备份。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysql发行版选择

1、mysql发行版和存储引擎

(1)MySQL的官方发行版

  • 简单
  • 开源
  • 支持多种存储引擎:M有ISAM,InnoDB,MERGE,MEMORY、BDB、EXAMPLE,FEDERATED,ARCHIVE,CSV,BLACKHOLE
  • 支持高可用架构:mysql自身的replication功能可以实现mysql数据的实时备份。

(2)MySQL与存储引擎

  • MySQL最常用的两个存储引擎是InnoDB和MyISAM
  • MySQL4和5使用默认的MyISAM存储引擎,从MySQL5.5开始,MySQL已将存储引擎从MyISAM更改为nnoDB
  • 两大存储引擎的区别是
项目InnoDBMyISAM
1支持事务,增删查改可以回滚还原不支持
2支持外键,支持行级锁不支持
3适用频繁修改以及涉及到安全性较高的应用适合大量的select,可以全文索引
4缓存在内存中的是数据索引和数据是分开的,索引是压缩的,缓存在内存的是索引而不是数据
5可支持大并发请求,适合大量insert和update

关于MyISAM和InnoDB的选择和使用
如果应用程序一定要用事务,毫无疑问使用InnoDB
如果应用程序对查询性能要求较高,就要使用MyISAM,MyISAM拥有全文索引的功能,这可以极大的优化查询的效率。

(3)percona server 分支

最接近官方MySQL Enterprise发行版的版本,percona提供了高性能XtaDB引擎,还提供了PXC高可用解决方案,并且附带了percona-toolkit等dba管理工具箱。

(4)Maria DB

是为了完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的替代品。
Maria DB提供了标准存储引擎,即MyISAM和InnoDB,10.0.9版使用XtraDB来代替InnoDB,
总之,线上首选percona分支,其次是mysql版本,最后是MariaDB

mysql安装

1、二进制安装mysql

安装包大家可以从https://dev.mysql.com/downloads/mysql/进行下载,下载下来的二进制包名类似mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz,安装过程如下:

[root@mysqlserver  local]# tar zxvf mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz
[root@mysqlserver  local]# mv mysql-5.7.35-linux-glibc2.12-x86_64  mysql
[root@mysqlserver  local]# mkdir /usr/local/mysql/data
[root@mysqlserver  local]# mkdir /usr/local/mysql/logs
[root@mysqlserver  local]# useradd mysql
然后,继续执行如下操作:
[root@mysqlserver ~]#  vim /etc/my.cnf
[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
log-error=/usr/local/mysql/logs/mysqld.log
pid-file=/usr/local/mysql/logs/mysqld.pid

[root@mysqlserver ~]# chown -R mysql:mysql   /usr/local/mysql
[root@mysqlserver ~]# cd  /usr/local/mysql
[root@mysqlserver mysql]# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
[root@mysqlserver mysql]# cp /usr/local/mysql/support-files/mysql.server  /etc/init.d/mysqld
[root@mysqlserver mysql]# chkconfig  --level 35 mysqld on
[root@mysqlserver mysql]# /etc/init.d/mysqld  start

Mysql启动成功后,需要重置root密码,临时密码在上面定义的mysql日志文件/usr/local/mysql/logs/mysqld.log中可以查到
找到临时密码后,执行如下sql

[root@mysqlserver ~]# /usr/local/mysql/bin/mysql -uroot -p

输入临时密码
进入sql命令行后,执行如下命令,修改root密码:

SQL> alter user 'root'@'localhost' identified by 'root@mySQL123';

yum在线安装

从 https://dev.mysql.com/downloads/下载yum源,然后通过yum安装即可。

[root@mysqlserver ~]# yum install  mysql-server mysql mysql-common mysql-libs

或者从https://mirrors.aliyun.com/mysql/MySQL-5.7/ 下载对应的rpm文件包安装也可。
安装完成后,可直接启动mysql服务,会自动初始化系统库以及启动相关服务。
mysql启动完成后,会生成root用户的默认密码,可从mysqld.log日志文件中获取临时的密码,此密码可用于临时登录,登录后,需要马上修改为自己的新密码,执行如下SQL命令:

SQL > alter user 'root'@'localhost' identified by 'root@mySQL123';

innoDB和myISAM运行原理

Mysql基础操作

1、连接Mysql (客户端工具NaviCat、phpMyAdmin、MySQL-Front)

格式: mysql -h 主机地址 -u用户名 -p用户密码

  • 连接到本机上的MYSQL。
    首先进入Mysql安装程序的bin目录下,再键入命令./mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码。

  • 连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:

mysql -h110.110.110.110 -u root -pabcd123;
(注:u与root之间可以不用加空格)
  • 退出MYSQL命令: exit (回车)

2、修改密码

格式:mysqladmin -u用户名 -p旧密码 password 新密码

  • 首先在Mysql安装目录下面的bin目录,然后键入以下命令
    mysqladmin -u root  -p旧密码 password ab12

注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。

  • 再将root的密码改为abc345。
    mysqladmin -u root -p ab12 password abc345

3、增加新用户/授权用户

注意:和上面不同,下面的因为是MYSQL命令行中的命令,所以后面都带一个分号作为命令结束符
格式:grant select on 数据库.* to 用户名@登录主机 identified by “密码”

  • 增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用root用户连入MYSQL,然后键入以下命令:
 mysql>grant select,insert,update,delete on *.* to test1@"%" Identified by "abc";

但这种权限增加的用户是十分危险的,如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录这台mysql数据库,并可对数据进行任意操作,解决办法是设置登录权限。

  • 增加一个用户test2密码为abc,让它只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库。
mysql>grant select,insert,update,delete on mydb.* to test2@localhost identified by "abc";

如果你不想test2有密码,可以再执行下面这个命令将密码取消掉。

 mysql>grant select,insert,update,delete on mydb.* to test2@localhost identified by "";

如果想给一个用户test2授予访问mydb数据库的所有权限,并且仅允许test2在192.168.11.121这个客户端ip登录访问,可执行如下命令:

mysql>grant all on mydb.* to test2@192.168.11.121 identified by "abc";

4、数据库基础操作

  • 创建数据库
    注意:创建数据库之前要先连接Mysql服务器

命令:create database <数据库名>

创建数据库,并分配用户方法:

CREATE DATABASE 数据库名;
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON 数据库名.* TO 数据库名@localhost IDENTIFIED BY '密码';

例1:建立一个名为abc的数据库
mysql> create database abc;

  • 显示数据库
    命令:show databases (注意:最后有个s)
    mysql> show databases;
  • 删除数据库
    命令:drop database <数据库名>
    例如:删除名为 iivey的数据库
mysql> drop database iivey;
mysql> drop database if exists drop_database;	//if exists 判断数据库是否存在,不存在也不产生错误
Query OK, 0 rows affected (0.00 sec)
  • 连接数据库
    命令: use <数据库名>
    例如:如果iivey数据库存在,尝试存取它:
   mysql> use iivey;

use语句可以通告MySQL把iivey数据库作为默认(当前)数据库使用,用于后续语句。该数据库保持为默认数据库,直到语段的结尾,或者直到发布一个不同的USE语句。

5、Mysql表操作

  • 创建数据表
    命令:create table <表名> ( <字段名1> <类型1> [,…<字段名n> <类型n>]);
mysql> create table MyClass(
> id int(4) not null primary key auto_increment,
> name char(20) not null,
> sex int(4) not null default '0',
> degree double(16,2));
  • 删除数据表
    命令:drop table <表名>
    例如:删除表名为 MyClass 的表
   mysql> drop table MyClass;
  • 表插入数据
    命令:insert into <表名> [( <字段名1>[,…<字段名n > ])] values ( 值1 )[, ( 值n )]

例如:在表MyClass中插入二条记录, 这二条记录表示:编号为1的名为Tom的成绩为90.45, 编号为2 的名为Joan 的成绩为88.99, 编号为3的名为Wang的成绩为99.5。
mysql> insert into MyClass values(1,‘Tom’,90.45),(2,‘Joan’,88.99), (3,‘Wang’, 99.5);

  • 查询表中的数据
  • 查询所有行
命令: select <字段1,字段2,...> from < 表名 > where < 表达式 >
例如:查看表 MyClass 中所有数据
   mysql> select * from MyClass;
  • 查询前几行数据
例如:查看表 MyClass 中前2行数据
mysql> select * from MyClass order by id limit 0,2;
  • 删除表中数据
    命令:delete from 表名 where 表达式
    例如:删除表 MyClass中编号为1的记录
mysql> delete from MyClass where id=1;
  • 修改表中数据
    语法:update 表名 set 字段=新值,… where 条件

mysql> update MyClass set name=‘Mary’ where id=1;

  • 增加字段
    命令:alter table 表名 add 字段 类型 其他;
    例如:在表MyClass中添加了一个字段passtest,类型为int(4),默认值为0
mysql> alter table MyClass add passtest int(4) default '0'
  • 修改表名
    命令:rename table 原表名 to 新表名;
    例如:在表MyClass名字更改为YouClass
   mysql> rename table MyClass to YouClass;

6、备份数据库

  • 导出整个数据库
    导出文件默认是存在
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
mysqldump -u user_name -p123456 database_name > outfile_name.sql
  • 导出一个表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
mysqldump -u user_name -p database_name table_name > outfile_name.sql
  • 导出一个数据库结构
    mysqldump -u user_name -p -d  --add-drop-table database_name > outfile_name.sql
  含义:-d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table
  • 带语言参数导出
mysqldump -uroot -p –default-character-set=latin1 --set-charset=gbk --skip-opt database_name > outfile_name.sql
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值