下载 :mysql-5.7.17.tar
重新克隆新的虚拟机:
eth0 网卡:192.168.4.50-192.168.4.57 /8台虚拟机
主机名称:mysql50-mysql57
一:安装部署 MySQL
-
准备工作(非必须的操作)
关闭防火墙(如果有的话)
关闭 SELinux(如果有的话)
如果之前有 mariadb,则需要先卸载,并删除对应的配置与数据:]# systemctl stop mariadb
]# rm -rf /etc/my.cnf
]# rm -rf /var/lib/mysql/*
]# rpm -e --nodeps mariadb mariadb-server mariadb-devel -
安装部署 MySQL
[root@mysql50 ~]# tar -xf mysql-5.7.17.tar //解压mysql整合包
./mysql-community-client-5.7.17-1.el7.x86_64.rpm
./mysql-community-common-5.7.17-1.el7.x86_64.rpm
./mysql-community-devel-5.7.17-1.el7.x86_64.rpm
./mysql-community-embedded-5.7.17-1.el7.x86_64.rpm
./mysql-community-embedded-compat-5.7.17-1.el7.x86_64.rpm
./mysql-community-embedded-devel-5.7.17-1.el7.x86_64.rpm
./mysql-community-libs-5.7.17-1.el7.x86_64.rpm
./mysql-community-libs-compat-5.7.17-1.el7.x86_64.rpm
./mysql-community-minimal-debuginfo-5.7.17-1.el7.x86_64.rpm
./mysql-community-server-5.7.17-1.el7.x86_64.rpm
./mysql-community-test-5.7.17-1.el7.x86_64.rpm
[root@mysql50 ~]# yum -y install mysql-community*
3.启动服务
[root@mysql50 ~]# systemctl start mysqld
提示:第一次启动,需要初始化数据,会比较慢
[root@mysql50 ~]# systemctl status mysqld
[root@mysql50 ~]# systemctl enable mysqld
4.配置 MySQL 管理员密码(默认数据库管理员账户为 root)
第一次启动时,mysql 会自动为 root 账户配置随机密码,我们需要通过日志查看该密码
[root@mysql50 ~]# grep password /var/log/mysqld.log
2018-12-25T12:43:41.164573Z 1 [Note] A temporary password is generated for root@localhost: cvAd3af8a<j?
[root@mysql50 ~]# mysql -uroot -p'cvAd3af8a<j?'
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
注意:用该密码登录到服务端后,必须马上修改密码,不然会报上面的错误。
mysql>set global validate_password_policy=0; //只验证长度
Query OK, 0 rows affected (0.00 sec)
mysql>set global validate_password_length=6; //修改密码长度,默认值是 8 个字符
Query OK, 0 rows affected (0.00 sec)
mysql>alter user user() identified by "123456"; //修改登陆密码
Query OK, 0 rows affected (0.00 sec)
修改密码后,可以数据库命令了!
mysql>show databases;
**
二:数据库基本管理**
1.数据库操作基本流程
◼ 连接登陆数据库
◼ 创建数据库
◼ 创建数据表
◼ 插入数据记录
◼ 断开连接
连接 MySQL 数据库的命令语法格式:
语法:mysql [-h 服务器 ip或域名 -u 用户名 -p 密码 数据库名称]
注意事项:
操作指令不区分大小写(密码和变量例外)
每条SQL语句都以分号结尾
默认不支持Tab
\c可以取消书写错误的命令
在/var/lib/mysql添加 --auto rehash 可以补齐列
常用的SQL命令分类:
DDL 数据定义语言(create alter drop)
DML 数据操作语言 (insert update delete)
DCL 数据控制语言 (grant revoke)
DTL 数据事务语言 (commit rollback savepoint)
mysql> create database bbs character set utf8; //支持中文
mysql> show databases; //查看所有数据库
+--------------------+
| Database |
+--------------------+
| information_schema | //信息概要库
| mysql | //授权库
| performance_schema | //性能结构库
| sys | //系统元数据库
+--------------------+
mysql> create database 库名; //新建数据库
mysql> use 库名; //切换库
mysql> select database(); //确认当前所在的库
mysql> drop database 库名; //删除数据库
mysql> show tables; //查看所有表
mysql> desc columns_priv\G //查看表结构,以列表形式展现,末尾不用分号
mysql> desc columns_priv; //查看表结构,以表格形式展现末尾需要有分号
mysql> show character set; //查看所有可用的语言
mysql> create database school character set utf8; //新建school数据库支持中文
mysql> create table school.student( //新建school数据库student表
> 学号 char(20),
> 姓名 char(20),
> 性别 char(5),
> 手机号 int (12),
>通信地址 char(50));
1、查看数据表结构语法格式: desc [库名.]表名;
mysql> desc school.student;
mysql> insert into school.student values('NSD1810','张三','男',13229739712,'北京'); //添加一条数据
mysql> insert into school.student values('NSD1811','李斯','男',13229739713,'上海'),('NSD1812','周五','男',13229739714,'长白山'); //添加多条数据(多条数据使用逗号分隔)
2、更新数据语法格式:update 数据库名称.数据表名称 set 字段=值 [where 条件]
mysql> update school.student set 性别='女'; //更新(字段性别)所有数据为女
mysql> update school.student set 性别='女' where 姓名='李斯'; //更新满足条件的数据
mysql> delete from school.student where 学号='NSD1810'; //删除表中满足条件的数据
mysql> delete from school.student; //删除整个数据库(包括表)
mysql> drop table school.student; //删除整个数据表
三、 MySQL 数据类型
- 数字类型
mysql> create table school.num(
id tinyint,
age int(3),
score float(4,2));
mysql> desc school.num;
mysql> insert into school.num values(1111,22,11.2);
ERROR 1264 (22003): Out of range value for column ‘id’ at row 1
#提示值超出范围(tinyint 只能存-128~127 或者 0~255 之间的值)。
mysql> insert into school.num values(130,22,11.2);
ERROR 1264 (22003): Out of range value for column ‘id’ at row 1
#130 也提示错误,因为默认使用的是有符号的存储,如果需要无符号需要添加 unsigned 标记。
mysql> insert into school.num values(-125,22,11.2);
Query OK, 1 row affected (0.06 sec)
#正确
mysql> insert into school.num values(-125,22,143.434);
ERROR 1264 (22003): Out of range value for column ‘score’ at row 1
提示:错误,小数的总长度为 4 位,也就是整数为 2 位,小数为 2 位。当整数写 3 位就报错。
mysql> insert into school.num values(-125,22,14.43433333);
ERROR 1264 (22003): Out of range value for column ‘score’ at row 1
提示:不报错误,整数位合法,小数位超出,系统会自动把多余的删除,进行四舍五入。
- 字符类型
mysql> create table school.info(
name char(4),
email varchar(30));
mysql> desc school.info;
mysql> insert into school.info values(‘tom’, ‘[email protected]’);
Query OK, 1 row affected (0.06 sec)
#注意:字符串需要使用引号!
mysql> select * from school.info;
- 字符类型
datetime 日期时间类型,占 8 个字符
范围 1000-01-01 00:00:00:000000~9999-12-31 23:59:59.999999
如果不给该类型的数据赋值,则默认为 NULL
timestamp 日期时间类型,占 4 个字节
范围 1970-01-01 00:00:00:000000~2038-01-19 03:14:07.999999
如果不给该类型的数据赋值,则 mysql 自动为其分配当前的系统时间
YYYYmmddhhmmss
date 日期类型,占用 4 个字节
范围 0001-01-01~9999-12-31
默认使用 4 位数字表示,当只用 2 位数字赋值时:
01~69 自动识别为 2001~2069
70~99 自动识别为 1970~1999
year 年份类型,占用 1 个字节
范围 1901-2155
time 时间类型,占用 3 个字节
范围 HH:MM:SS
创建学员信息表:姓名、出生日期、入学年份、上课时间、下课时间
mysql> create table school.stuinfo(
name char(5),
birth datetime,
start year,
begin time,
end time);
mysql> insert into school.stuinfo values (‘tom’,20011010121200,2018,0800,1800);
mysql> select * from school.stuinfo;
mysql> insert into school.stuinfo values ( ‘lucy’,20011010121200,2555,0800,1800);
ERROR 1264 (22003): Out of range value for column ‘start’ at row 1
#year 年份的有效范围是 1901-2155
几个 mysql 内置的时间函数
mysql> select now(),sysdate();
-
字符类型
枚举类型(选择类型)
enum(值 1,值 2,值 3…) #单选项
set(值 1,值 2,值 3…)#多选项mysql> create table school.tea(
name char(5),
gender enum(‘boy’, ‘girl’),
interest set(‘book’,‘film’,‘music’,‘football’));mysql> insert into school.tea values(‘fan’,‘boy’,‘book,football’);
mysql> insert into school.tea values(‘qing’,‘girl’,‘book,film,music’);
mysql> desc school.tea;
mysql> insert into school.tea values (‘fan’, ‘boy’, ‘book,football’)
如果错误,是超出了可选择的范围
mysql> insert into school.tea values (‘qing’, ‘girl’, ‘book,film,music’)
总结:
1、安装数据库
2、基本操作(增、删、改、查)
3、数据类型
、数字类型
、字符类型
、日期时间类型
、枚举类型