一、安装
1、环境
由于mysql服务大多部署在linux系统,所以这里只介绍centos7
2、安装
1⃣️找到原先安装的mysql的rpm和依赖
rpm -qa | grep mysql
如果有显示结果,那么使用下面的命令逐个删除
yum remove mysql xxx (xxx就是要删除的文件名)
2⃣️以上的操作不会删除mysql 的配置文件,需要手动操作
find / -name mysql
找到所有相关的MySQL的配置信息,然后逐条删除即可
rm -rf xxx (xxx)就是配置文件
3⃣️由于Mysql在Centos7中收费了,所以Centos7开始免费集成的数据库是MariaDB而安装Mysql会和MariaDB冲突
因此需要先删除MariaDB,首先搜索
rpm -qa | grep mariadb
可能看到的结果如下
mariadb-libs-5.5.56-2.e17.x86_64
删除之
rpm -e mariadb-libs-5.5.56-2.e17.x86_64
如果提示“依赖检测失败”,适用如下命令强删
rpm -e --nodeps mariadb-libs-5.5.56-2.e17.x86_64
如果安装过程中还是提示mariadb冲突,可以检查是否存在lib,然后删除
yum list | grep mariadb-libs**
4⃣️云上传mysql8版本
wget http://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
5⃣️安装
yum localinstall mysql80-community-release-el7-1.noarch.rpm
6⃣️检查是否成功
yum repolist enabled | grep “mysql.-community.”
出现上图,说明成功
6⃣️安装mysql服务端
yum install -y mysql-community-server
7⃣️启动mysql
systemctl start mysqld
8⃣️查看状态
systemctl status mysqld
出现如图,说明成功
3、设置
1⃣️把/etc/my.cnf配置文件中的"default-authentication-plugin=mysql_native_password"解注释
改完后重启systemctl restart mysqld
MySQL会给我们在/etc/log/mysqld.log下,为root用户生成了一个新的密码
可以通过grep ‘temporary password’ /var/log/mysqld.log查看到
2⃣️修改密码
用刚才生成的新密码登陆
mysql -u root -p
这时候提示需要修改密码,因为有密码强度限制,先修改密码强度
set global validate_password.policy=0;(0是最低级别,数字越大,限制越多)
set global validate_password.length=6;
修改密码
alter user ‘root’@‘localhost’ identified with mysql_native_password by ‘123456’;
show databases;
3⃣️上面基本解决本地访问问题,下面介绍如何远程访问
首先创建一个密码为123456,同时访问ip为全ip(%)的用户
create user ‘zyuser’@‘%’ identified by ‘123456’;
然后赋予权限,让用户拥有全部的DDL和DML权限
grant all on *.* to ‘zyuser’@‘%’;
解释下:
DDL:数据定义语言,可以理解成对库和表的操作,比如create、alter、drop、truncate、comment、grant、revoke等,它是隐性提交的,不能rollback
DML:数据操作语言,理解为对数据的操作,比如crud,merge等,可以手动控制事务的开启、提交和回滚
4⃣️关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl mask firewalld.service
5⃣️开放端口
安装并开启iptables
yum install iptables-services -y
systemctl enable iptables
systemctl start iptables
在iptables中加一条关于MySQL的端口限制规则
重新启动iptables
systemctl enable iptables.service
systemctl restart iptables.service
到这里,数据库的安装就算结束了
二、关系型数据库简单对比
项目 | mysql | sql server | oracle |
---|---|---|---|
公司 | Oracle | Oracle | Microsoft |
事务 | innodb下支持 | 支持 | 非自动提交时 |
自增 | AUTO_INCREMENT | identity(1,1) | 序列或触发器 |
三、mysql常用语法
1、DDL常用语法(数据定义语言)
1、库操作
1⃣️建库
CREATE DATABASE test CHARACTER SET utf8;
2⃣️修改库的默认编码
ALTER DATABASE test CHARACTER SET utf8;
3⃣️删除数据库
DROP DATABASE test;
2、表操作
1⃣️创建表:
DROP TABLE IF EXISTS tbl_price
;
CREATE TABLE tbl_price
(
id
bigint(10) NOT NULL DEFAULT ‘0’ COMMENT ‘定价ID’,
price_name
varchar(64) NOT NULL DEFAULT ‘’ COMMENT ‘定价名称’,
price_type
TINYINT(2) NOT NULL DEFAULT ‘1’ COMMENT ‘定价类型,1:月卡 2:季卡 3:年卡 4:直接售卖 5:包月 6:假期’,
pay_type
TINYINT(2) NOT NULL DEFAULT ‘1’ COMMENT ‘付费类型,1:作业服务 2:提分vip 3:个性化阶段报告’,
favorable_price
decimal(10,2) NOT NULL DEFAULT ‘0.00’ COMMENT ‘现价’,
price
decimal(10,2) NOT NULL DEFAULT ‘0.00’ COMMENT ‘原价’,
is_delete
bit(1) NOT NULL DEFAULT b’0’ COMMENT ‘状态,删除:1 未删除:0’,
create_time
datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ‘记录创建时间’,
update_time
timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ‘更新时间’,
PRIMARY KEY (id
)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED COMMENT=‘定价表’;
2⃣️添加字段
ALTER TABLE USERS ADD alias varchar(20) COMMENT ‘别名’;
3⃣️修改字段
不修改名称:ALTER TABLE USERS MODIFY name varchar(20) NOT NULL COMMENT ‘用户名’;
修改名称:ALTER TABLE USERS CHANGE name username varchar(20) NOT NULL COMMENT ‘用户名’;
4⃣️删除字段
ALTER TABLE USERS DROP COLUMN alias;
– 删除多个字段
– ALTER TABLE USERS DROP COLUMN alias,DROP COLUMN age;
5⃣️ 查看表结构
desc stud;
3、索引操作
1⃣️添加/删除索引
ALTER TABLE USERS ADD PRIMARY KEY ( id
)
ALTER TABLE 表名 DROP PRIMARY KEY;
2⃣️添加唯一索引
ALTER TABLE USERS ADD UNiQUE ( username
)
3⃣️添加普通索引
ALTER TABLE USERS
ADD INDEX index_name ( age
)
4⃣️添加全文索引
ALTER TABLE 表名
ADD FULLTEXT (列名
)
5⃣️添加组合索引
ALTER TABLE 表名
ADD INDEX index_name ( 列名1
, 列名2
, 列名3
)
6⃣️添加/删除外键
alter table 表名 add constraint fk_引用id foreign key(引用id) references 被引用表名 (被引用id)
alter table 表名 drop forign key fk_引用id
2、数据库管理命令
1、连接数据库
mysql -u root -p123456
或
mysql -u root -p
密码
2、查看操作
1⃣️查看所有库
show databases;
2⃣️ 查看所在库的表
show tables;
3⃣️查看库的创建语句
show create database test;
4⃣️查看表的创建语句
show create table test;
5⃣️查看表的索引
– show index from table_name(表名)
show index from users;
6⃣️查看mysql版本
select version();
7⃣️查看当前用户
select user();
3、创建用户
– 特别需要注意,在 MySQL 中,账号由两部分组成:
– 1. user
– 2. host
– 即使 user 相同,只要 host 不同,也会被认为是不同账号。
– 这样可以非常方便对来自不同 ip 地址的访问进行精细的权限控制。
– 默认情况下,创建的用户 host 为 ‘%’,这是一个匹配符,跟模糊查询里的意思一样,表示匹配所有
create user [用户名] identified by ‘[密码]’;
create user vip identified by ‘vippp’; – 所有连接
create user vip@‘127.0.0.1’ identified by ‘xxx’; – 本地连接
create user vip@‘192.168.%’ identified by ‘yyy’; – 192.168 网段的连接
4、删除用户
drop user 用户名;
或
delete from mysql.user where user=‘用户名’ and host=‘%’
5、修改密码
set password from ‘用户名’ @host=password(‘新密码’);
或
update mysql.user set password=password(‘新密码’) where user=‘用户名’ and host=‘%’;
–使用password() 进行加密
6、设置用户权限
–将所有数据库上的所有权利都授予通过本机连接的VIP用户;
grant all on . to vip@‘127.0.0.1’;
–将数据库books上的所有权利都授予所有连接的vip用户;
grant all privileges on books.* to vip@‘%’;
–将books数据库上的users表的访问权限开发给vip用户;
grant select on books.users to vip@‘%’;
–with grant potionss的意思是可以给vip给予权限给别的用户
grant all on . to vip@‘%’ with grant potions;
–设置权限后要刷新权限
flush privileges;
3、DML(数据操纵语言)
增删改查操作
Select\delete\update\insert\call