1.数据库简介
DB(database) 数据库
DBMS 数据库管理系统
RDBMS 关系型数据库(MySQL,Oracle,SQL Server,)
NoSQL 非关系型数据库
NewSQL
2.数据库表
数据库中以”表“为组织单位存储数据。
数据库表由:表名、表字段、表记录构成
3.二进制安装数据库
3.1安装依赖文件
yum install libaio libaio-devel ncurses ncurses-devel openssl openssl-devel -y
3.2切换目录并下载二进制安装包
cd /usr/local/
官网下载 wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz 局域网内下载 wget http://192.168.3.200/Software/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz
3.3解压
tar -xvf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz
3.4将解压后的安装包改名
mv mysql-8.0.20-linux-glibc2.12-x86_64 mysql
3.5创建一个用户并设置密码
useradd mysql
passwd mysql
3.6修改MySQL的配置文件
vim /etc/my.cnf
[mysqld] port = 3306 basedir = /usr/local/mysql datadir = /usr/local/mysql/data log-error = /usr/local/mysql/data/error.log pid-file = /usr/local/mysql/data/mysql.pid socket = /tmp/mysql.sock character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci default-storage-engine=InnoDB default-authentication-plugin=mysql_native_password sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
3.7创建data文件夹并更改mysql的目录权限
mkdir data
chown -R mysql .
chgrp -R mysql .
3.8初始化数据库
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
vim /etc/profile
在最后一行添加指定PATH关联MySQL的bin目录
export PATH=$PATH:/usr/local/mysql/bin
配置完成后让系统重新加载/etc/profie文件
source /etc/profile
3.9执行完后查看初始密码:
vim /usr/local/mysql/data/error.log
3.10
将启动脚本复制到/etc/init.d/目录,这是启动脚本的默认目录。 cp ./support-files/mysql.server /etc/init.d/mysqld 设置执行的权限 chmod +x /etc/init.d/mysqld 开启服务 /etc/init.d/mysqld start
4.使用脚本启动的四种方法:
使用默认脚本路径
cd /usr/local/mysql ./support-files/mysql.server start
配置文件登录
cd /etc/init.d/mysqld /etc/init.d/mysqld start|stop|restart
server service mysqld start|stop|restart
systemctl systemctl start|stop|restart mysqld
关闭服务
killall mysql (不推荐,会导致数据丢失)
遇到以下情况时: 1.安装时初始化失败 2.初始密码遗失时, 做法: 删除 /usr/local/mysql/data目录中的数据 rm /usr/local/mysql/mysql
执行初始化命令: [root@zuolaoshi mysql]# ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
如何找回root密码? 跳过Mysql的root密码,直接登录,用于修改密码; vim /etc/my.conf [mysqld]
#配置的最后添加,跳过密码登录的功能 skip-grant-tables
#之后重启mysql服务 修改密码: mysql -uroot alter user 'root'@'localhost' identified by 'Root123456'; 密码
设置成功后必须删掉skip-grant-tables; 若忘记mysql登录密码,先停止服务:
./ support-files/mysql.server start/stop (一般把这个拷贝到这个文件夹中:
[root@zuolaoshi mysql]# cp ./support-files/mysql.server /etc/init.d/mysqld)
创建远程用户
MySQL的用户是由
用户名@地址
root@localhost # localhost只能本机登录,不能远程登录
% 表示所有主机都可以登录MySQL
root@192.168.8.%
DML(数据操纵语言)
## 添加数据 insert into 表名(列1,列2,....) values(值1,值2...); insert into student(id,name,sex,b_day) value(1,'武大郎','男','2000-1-1'); insert into student(id,name,sex,b_day) value(2,'王小二','男','2002-2-2'); insert into student(id,name,sex,b_day) value(3,'张三','男','2003-3-3'); insert into student(id,name,sex,b_day) value(4,'李四','男','2004-4-4'); insert into student(id,name,sex,b_day) value(5,'武则天','女','2005-5-5'); insert into student(id,name,sex,b_day) value(6,'慈禧','女','2006-6-6'); ## 查看数据 DQL(数据查询语言) select * from student; -- 查看所有数据 select name,sex from student; ## 修改语句必须要加where条件,否则会更新所有行的数据。 update student set b_day='1999-9-9' where id=1; ## 删除数据必须要加where条件,否则会删除所有行的数据。 delete from student where id=6; # mysql安全模式sql_safe_updates是为了防止我们在操作表时的误操作,把全表删除了或者更新了。 # 检查是否开启 mysql> show variables like 'sql_safe_updates'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | sql_safe_updates | OFF | +------------------+-------+ # 开启安全模式 set sql_safe_updates = 1; # 关闭安全模式 set sql_safe_updates = 0; # 自动启动安全模式 在[mysqld]下配置一个ini-file=/usr/local/mysql/init-file.sql 文件中添加 set global sql_safe_updates=1; 语句
表的结构解析
CREATE TABLE
user_info
(
id
int(10) unsigned NOT NULL AUTO_INCREMENT,
name
varchar(30) COLLATE utf8mb4_bin NOT NULL,
sex
enum('女','男') COLLATE utf8mb4_bin NOT NULL,
birythday
date NOT NULL, PRIMARY KEY (id
)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
约束条件 行级约束 unsigned 无符号,数字没有负数 not null 数据不能为空 auto_increment 自动增长 collate utf8mb4_bin 排序规则 字符集 数字 -> 文字 primary key 主键(主关键字),不能为空,唯一 unique Key 唯一约束、唯一索引 foreign key 外键约束,用于多表关联 表级约束 engine 数据库查询MySQL8引擎默认为InnoDB(支持事务,安全性高) charset 设置字符集 collate 设置字符排序规则