前言:Mysql数据库,知识非常的多,要想学精学通这块知识,估计也要花费和学linux一样的精力和时间。小编也是只会些毛皮,给大家分享一下~

一、MySQL安装

(1)安装方式:

1 、程序包yum安装,下实验一

  优点:安装快,简单

  缺点:定死了各个文件的地方,太死板

2 、二进制格式的程序包:展开至特定路径,并经过简单配置后即可使用(推荐),下实验二

3 、源代码:编译安装,太麻烦

(2)mysql 的程序组成:

Client:

  mysql :CLI 交互式客户端程序

  mysqldump, mysqladmin...

Server:

  mysqld_safe mysql的备份

  mysqld

  mysqld_multi :多实例

服务器监听的两种socket 地址:

  ip socket: 监听在tcp 的3306 端口,支持远程通信

  unix sock: 监听在sock 文件上(/tmp/mysql.sock,/var/lib/mysql/mysql.sock) ,仅支持本机通信

实验一:yum源安装MySQL和开启设置服务

1、打开官方网站,上边有各种版本的yum源,找到自己想要的版本设置yum源

https://downloads.mariadb.org/mariadb/repositories/

若上不了网,也可以使用自己光盘里的老版本

2、若不用自己的光盘老版本,要配置yum源

vim /etc/yum.repos.d/along.repo

[mariadb]

name = MariaDB

baseurl = http://yum.mariadb.org/10.2/centos7-amd64

gpgcheck=0

若有其他yum源,加一个enabled=0 先临时关闭,yum clean all 清除缓存,注意:官方给的yum源安装的Maria没有安装相依赖的包,还需自己安装相依赖的包

3、yum安装和开启服务

这里,就直接安装光盘里的老版本了

yum -y install mariadb-server

systemctl start mariadb 开启服务

ss -nutl 打开了3306的tcp端口

查询端口对应的进程信息 lsof -i :3306 或 netstat -tnlp | grep 3306

注意:开启服务后,会多一个mysql的用户,它的家目录:存放数据库,相当于数据库中的每个表

mysql用户是安装包时,执行了个脚本,创建了mysql用户,提示我们要是二进制安装需创建用户

rpm -q --scripts mariadb-server 可以查看这个脚本

4、mysql 运行

发现是root,能查能删,很不安全

还能mysql xxx 匿名登录

5、运行安全脚本

/usr/bin/mysql_secure_installation

实验二:二进制安装mariadb和开启设置服务

注意:安装之前要确保自己系统上没有mariadb服务,有老版本可以先卸掉,删除mysql用户

1、去官网下载自己想要的版本 http://mariadb.org

rpm -qi mariadb 可以查询官网

上传,解包解压缩

rz,tar xvf mariadb-10.2.8-linux-x86_64.tar.gz -C /usr/local/

(不像编译安装一样,解包可以放在任何目录,这个二进制安装必须指定在这个目录)

2、cd /usr/local/ 发现mariadb的目录名字不符合要求

ln -s mariadb-10.2.8-linux-x86_64/ mysql 创建软连接也可以改名

3、创建mysql用户

useradd -d /app/mysqldb -r -m -s /sbin/nologin mysql

4、创建修改配置文件

ls support-files/ 包里自带的有配置文件,但地方不对,要放在/etc/mysql/my.cnf

mkdir /etc/mysql

cp support-files/my-huge.cnf /etc/mysql/my.cnf 我们演示一个大的

vim /etc/mysql/my.cnf 修改配置文件

[mysqld]

datadir = /app/mysqldb //指定总目录,必须的

innodb_file_per_table = on //让每一个表数据库都是一个文件,方便管理

skip_name_resolve = on //忽略名字的反向解析,加快速度

5、执行脚本,创建系统数据库

cd /usr/local/mysql 一定要在这个目录下执行脚本,因为脚本写死了

./scripts/mysql_install_db --user=mysql --datadir=/app/mysqldb 执行脚本

完成后就会在/app/mysqldb/ 生成mysql系统数据库

6、把服务脚本复制过去

cp support-files/mysql.server /etc/init.d/mysqld

chkconfig --add mysqld 设置服务在哪个运行级别,在哪个运行级别开启服务

chkconfig --list mysqld

service mysqld start 失败,看失败原因:缺少日志文件,日志文件须有读写权限

7、创建配置文件

mkdir /var/log/mariadb/

touch /var/log/mariadb/mariadb.log

chown mysql /var/log/mariadb/mariadb.log

service mysqld start 开启成功

设置PATH:

vim /etc/profile.d/mysql.sh

PATH=/usr/local/mysql/bin:$PATH

. /etc/profile.d/mysql.sh

8、运行安全初始化脚本,同上实验

mysql_secure_installation

二、mysql基础入门操作

1、命令行交互式命令:mysql

mysql 命令的选项:

-uUSERNAME: 用户名;默认为root

-hHOST: 服务器主机; 默认为localhost

-pPASSWORD :用户的密码; 建议使用-p, 默认为空密码

2、mysql中一些的名词

数据库:database

表:table

索引:index

引擎:engines

列、字段:column

\G:竖着显示

3、SQL 语句:(4大类)

DDL: Data Defination Language 数据定义语言,修改表结构

CREATE(创建), DROP(删除), ALTER(修改表结构)

DML: Data Manipulation Language 数据操作语言,修改表里的数据

INSERT, DELETE, UPDATE(更新数据)

DQL :Data Query Language 数据的查询语言

SELECT 用法多,非常灵活

DCL :Data Control Language 数据控制语言,授权限

GRANT, REVOKE(取消授权)

三、对数据库的操作

1、查看数据库:show databases;

查看某个数据库中的表:show tables [from database_name] 如果已经在这个库下,不用加from

数据库有information_schema 库,这个库是只读库,只有root特殊权限的用户登录才能看到,不能drop删除

数据库有#mysql50#.mozilla 类似的库的处理方法,因为mysql家目录下有个隐藏文件导致,不能删除

把这些隐藏文件移走就好了

2、创建数据库:

CREATE DATABASE(数据库) [IF NOT EXISTS](如果不存在,创建)'DB_NAME'; 创建成功一个,会生成一个表数据库文件

  CHARACTER SET 'character set name' 设置字符集,不推荐设置,不建议调

  COLLATE 'collate name' 设置排序规则,不推荐设置

注意:数据库对象的命名规则

必须以字母开头

可包括数字和三个特殊字符(# _ $)

不要使用MySQL 的保留字

同一Schema(数据库) 下的对象不能同名

3、删除数据库

DROP DATABASE [IF EXISTS] 'DB_NAME'; 删除成功,会删除对应的表数据库文件

查看支持所有字符集:SHOW CHARACTER SET; 不需要改

查看支持所有排序规则:SHOW COLLATION; 不需要改

4、获取命令使用帮助:mysql>help create database;

例:create database testdb;  创建testdb数据库

drop database testdb;  删除testdb数据库

四、创建删除表

1、查看数据库中所有的表:show tables from base_name;

查看表结构desc tbl_name;

2、创建表,依照范式

CREATE TABLE [IF NOT EXISTS] 'tbl_name' (col1 type1 修饰符, col2 type2 修饰符, ...)

字段信息:

• col type1 指定类型

• PRIMARY KEY(col1,...) ()复合主键

• INDEX(col1, ...) 索引

• UNIQUE KEY(col1, ...) 唯一键

表选项:

• ENGINE [=] engine_name (引擎设置,默认就好)

  SHOW ENGINES; 查看支持的engine 引擎类型

• ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT |COMPACT} 行的格式,默认就好

create table students3 select * [id,name] from students; 也可以创建一个表,完全复制另一个表的结构[或自己选择的结构];复制的表没有约束,如主键

insert into students3 select * from students; 有students3这个表,完全复制另一个表的内容

获取创建表的帮助:mysql> HELP CREATE TABLE;

3、删除表: DROP TABLE [IF EXISTS] 'tbl_name';

4、例子:

例1:CREATE TABLE testdb.students (id int UNSIGNED NOT NULL PRIMARY KEY,name VARCHAR (20) NOT NULL,age tinyint UNSIGNED);

解释:创建testdb库中名为students表;表有3列:id、name、age;id:数据类型int为正、不为空、设为主键;name:数据类型VARCHAR (20)、不为空;age:数据类型tinyint UNSIGNED)

例2:create table teachers (id int unsigned not null,name varchar(20) not null,age tinyint unsigned,primary key(id,name));

解释:创建testdb库中名为teachers表;表的复合主键为id和name列;其他和例1一样

例3:create table students3 select *  from students;  创建students3复制students的内容

五、DDL语句:修改表结构,尽量不要改表结构,很少用

1、查看表结构:DESC [db_name.]tb_name;

2、修改表结构 alter

ALTER TABLE 'tbl_name'

  字段:

    添加字段:add

      ADD col1 data_type [FIRST加到第一段的后边|AFTER col_name某一段的后边]

    删除字段:drop

    修改字段:change (字段名), modify (字段属性)

    索引:

      添加索引:add

      删除索引: drop

    表选项:

      修改:change

查看帮助:Help ALTER TABLE

3、例子:

Help ALTER TABLE 查看帮助

ALTER TABLE students3 RENAME s3; 改表名

ALTER TABLE s3 ADD phone varchar(11) AFTER name; 在s3表的name字段后加一个phone

ALTER TABLE s1 MODIFY phone int; 把phone的数据类型改为int

ALTER TABLE s1 CHANGE COLUMN phone mobile char(11); 把字段phone改名为字段mobile,数据类型为char(11)

ALTER TABLE s1 DROP COLUMN mobile; 删除字段mobile

ALTER TABLE students ADD gender ENUM('m','f') 增加gender字段,为枚举类型,只能是m或f

ALETR TABLE students CHANGE id sid int UNSIGNED NOT NULL PRIMARY KEY; 把修改id字段为sid,数据类型为正int、非空、主键

ALTER TABLE students ADD UNIQUE KEY(name); 在name字段加唯一键

ALTER TABLE students ADD INDEX(age); 在age字段加索引

DESC students; 查看这个表

SHOW INDEXES FROM students; 查看索引信息

ALTER TABLE students DROP age;

六、DML语句,修改表内容

1、查看

select * from tab_name [WHERE clause [LIMIT [m,]n];] 查看表中的所有内容,Limit m,n 跳过m行,要n行

select id,name,... from tab_name; 查出指定的表中内容

select count(*) from tab_name; 查看表中的记录数量,count()是自带的函数

2、修改表内容:

• INSERT 添加,插入,下有例子

  INSERT [INTO] tbl_name[(col_name,...)] VALUES(val1,...),(...),... 下例2,3

  分析:① tbl_name后不加(),默认按表结构的列;若加(),前后()内容要对应,顺序可以不按表结构,也可以设null值,但最好不要,

  ② 选项不是数字,都要加'',例:name='along'

insert into tab_name1 select * from tab_name2; 批量导数据,下例4

• UPDATE: 更新,修改表内容,下有例子

  UPDATE tbl_name SET col1=val1, col2=val2, ... [WHERE clause] [ORDER BY 'col_name' [DESC]] [LIMIT [m,]n]; 下例5

分析:若不加where,直接把所有列都修改了,Limit m,n 跳过m行,要n行

• DELETE:删除表内容,下有例子

  DELETE FROM tbl_name [WHERE clause] [ORDERBY 'col_name' [DESC]];可先排序再指定删除的行数,下例6

  分析:若不加where,直接把所有列都删除了

TRUNCATE TABLE tbl_name; 清空表,快速清空,删除的时候,不计日志,谨慎使用

3、例子

① select * from students limit 3,2;

② insert into students(id,name,age) values(1,'along',18); 添加1行信息

③ insert into students values(2,'xiaoming',19),(3,'xiaohong',20); 添加2,3行信息

④ insert s2 select * from students; 复制students表的信息到s2表中

⑤ update s2 set name='xiaohei',age=30 where id=2; 修改id=2行的内容

⑥ delete from s2 where id=3; 删除s2表的id=3的行

七、DQL 语句,select

DQL :SELECT,用法很多

SELECT col1,col2,... FROM tbl_name [WHERE clause] [ORDER BY 'col_name' [DESC]] [LIMIT [m,]n]; 查询表内容信息,上例1、

1、字段表示法:

  *: 所有字段

  as :字段别名,若事先做好了表,想要把列的英语改成中文,不用修改,可以直接用别名,下例1

2、排序:order by col_name [desc]

  解释:by后指定列,desc反向排序,反向也可以-col_name

  注意:若其中有空值,正向排序空值在第一行,反向排序空值在最后一行,可以order by -col_name desc 即正向排序,有把空值放在最后一行,下例2

3、WHERE clause:where 后的选项

操作符:下例3

  >, <, >=, <=, ==, !=

  BETWEEN ... AND ...

  LIKE:模糊匹配,

    % :任意长度的任意字符

    _ :任意单个字符;

  RLIKE :正则表达式模式匹配

  IS NULL ,IS NOT NULL 寻找空值,不能用=,只能用is,所以最好不要有null,不好管理

  IN (val1,val2,…) 离散值显示

条件逻辑操作:

  and ,or ,not

例子:

① select id as 学生编号,name 姓名,age 年龄 from students; 设置别名

② select * from students order by -age desc; 按年龄的列正向排序,null在最后

③ select * from students where age>=20; 显示age>=20的

select * from students where age between 18 and 20; 显示18-20的

select * from students where name like 'xiao%'; 显示name是xiao开头的

select * from students where name rlike 'ng$'; 显示name是ng结尾的

select * from s2 where age is null; 显示null值的行

select * from students where age in (18,20,30); 显示age=18,20,30的行

八、DCL 数据控制语言,授权限

(1)用户账号

1、用户账号:'user'@'host'

  user: 用户名

  host: 允许用户通过哪些主机远程连接mysqld 服务

    IP 、网络地址、主机名、通配符(% 和_)

2、创建用户:

CREATE USER 'username'@'host' [IDENTIFIED BY 'password'];

例:create user 'along'@'192.168.30.%' identified by 'centos'; 添加along账号在192.168.30这个网段,可以输centos密码连接

注意:这里的账号和linux的用户不是一个东西

3、查看当前等登录的用户:

SELECT user();

4、查看已经添加的用户:

SELECT User,Host,Password FROM mysql.user;

5、删除用户:DROP USER 'username'@'host';

示例:drop user'along'@'192.168.30.107';

6、更改口令:多用第一种

SET PASSWORD FOR 'user'@'host' = PASSWORD('password');

  分析:password();是调用了自带的函数

  例:set password for 'along'@'192.168.30.%'=password('along');

② UPDATE user SET password=PASSWORD('magedu') WHERE User='root';

  注意:相当于改了user的表,不推荐用,修改表的命令不会马上生效,需执行FLUSH PRIVILEGES 刷新一下生效

③ /usr/local/mysql/bin/mysqladmin -u root –poldpassword password 'newpassword'

注意:仅创建的用户,其所拥有的权限很小,所以我们要进行授权

(2)DCL,授权,回收权限

1、授权

GRANT priv_type,... ON [object_type] db_name.tb_name TO 'user'@'host' [IDENTIFIED BY 'password'] [WITHGRANT OPTION]; 授权并创建账号

① priv_type: ALL [PRIVILEGES] 授权类型:

   insert增,delete删 , update改,select查,all所有权限

② db_name.tb_name: 对哪个数据库的哪个表授权:

  *.*: 所有库的所表

  db_name.*: 指定库的所有表

  db_name.tb_name: 指定库的指定表

  db_name.routine_name :指定库的存储过程和函数

例:grant all on test.* to 'along2'@'%' identified by 'centos'; 创建along2用户,允许其在所有主机通过centos密码登录,对test库的所有表有所有权限

2、回收授权:

REVOKE priv_type, ... ON db_name.tb_name FROM 'user'@'host

例:revoke delete on test.* from 'along2'@'%'; 回收along2@'%'用户对test库的所有表的删除权限

注意:

① MariaDB 服务进程启动时会读取mysql 库中所有授权表至内存

② GRANT 或REVOKE 等执行权限操作会保存于系统表中,MariaDB 的服务进程通常会自动重读授权表,使之生效

③ 对于不能够或不能及时重读授权表的命令,可手动让MariaDB 的服务进程重读授权表:

mysql> FLUSH PRIVILEGES;

好了,关于mysql,小编也只是刚接触,感觉自己还在门外,希望大家一起进步!!!

Mysql的二进制安装和基础入门操作的更多相关文章

  1. Mysql数据库的二进制安装和基础入门操作

    前言:Mysql数据库,知识非常的多,要想学精学通这块知识,估计也要花费和学linux一样的精力和时间.小编也是只会些毛皮,给大家分享一下~ 一.MySQL安装 (1)安装方式: 1 .程序包yum安 ...

  2. MySQL数据库的二进制安装、源码编译和基础入门操作

    一.MySQL安装 (1)安装方式: 1 .程序包yum安装 优点:安装快,简单 缺点:定死了各个文件的地方,需要修改里边的相关配置文件,很麻烦 2 .二进制格式的程序包:展开至特定路径,并经过简单配 ...

  3. mysql二进制安装及基础操作

    mysql二进制安装及基础操作 环境说明: 系统版本    CentOS 6.9 x86_64 软件版本    mysql-5.6.36-linux-glibc2.5-x86_64 1.安装 采用二进 ...

  4. MySQL/MariaDB二进制安装

    本文说明MySQL/MariaDB二进制安装的过程 mysql和mariadb的安装方式基本一致,唯一初始化方式有点不一样 1.规划: 数据文件存储位置                /data/my ...

  5. MySQL RPM二进制安装

    +++++++++++++++++++++++++++++++++++++++++++标题:MySQL RPM二进制安装时间:2019年2月24日内容:MySQL RPM二进制安装重点:MySQL R ...

  6. MySQL linux二进制安装

    200 ? "200px" : this.width)!important;} --> 介绍 1.创建用户和目录 groupadd mysql useradd -r -g m ...

  7. Oracle学习第一天---安装和基础入门

    国庆七天假,决定静下心来入门Oracle数据库. 环境:Ocacle 11g 软件安装包和安装图解,大家可以在我的百度网盘上下载:链接:http://pan.baidu.com/s/1ntjDEnZ ...

  8. 数据库MySQL(带你零基础入门MySQL)

    (一)认识数据库 redis默认端口:6379 mysql默认端口:3306 什么是数据库? 数据库的英文单词:data base,简称DB. 数据库实际上就是一个文件集合,是一个存储数据的仓库,本质 ...

  9. Mysql数据库二进制安装

    MySQL数据库有四种安装方法: 源码包编译安装 RPM包安装 二进制文件安装 官方yum源安装 这里我们主要介绍二进制包的安装方法 在MySQL官网下载二进制包并且上传到服务器上 解压二进制包 [r ...

随机推荐

  1. Jquery的同步和异步请求

    1 异步请求:    1.1 $.ajax       $.ajax({                url : 'your url',                data:{name:valu ...

  2. # 团队作业8——第二次项目冲刺(Beta阶段)--5.27 seventh day

    团队作业8--第二次项目冲刺(Beta阶段)--5.27 seventh day Day six: 会议照片 项目进展 Beta冲刺的最后一天,以下是今天具体任务安排: 队员 昨天已完成的任务 今日计 ...

  3. java课程设计--We Talk(201521123061)

    java课程设计--We Talk(201521123061) 团队博客链接:http://www.cnblogs.com/slickghost/ 数据库 一.通过Dao模式建立与数据库的连接 1.数 ...

  4. 201521123117 《Java程序设计》第14周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 2. 书面作业 1. MySQL数据库基本操作 建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需出现自 ...

  5. 201521123121 《Java程序设计》第13周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 1.两类传输协议:TCP:UDP TCP/IP协议的名称中只有TCP这个协议名,但是在TCP/IP的传输层 ...

  6. java课程设计-猜数游戏(201521123029 郑佳明)

    1.团队课程设计博客链接 http://www.cnblogs.com/m1ng123/p/7056740.html 2.个人负责模板或任务说明 猜数运行3个主界面即相关功能 玩家信息存储的play类 ...

  7. Spring配置属性文件

    在项目开发阶段和交付阶段数据库的连接信息往往是不同的,可以把这些信息写成属性文件,再在Spring中导入即可引用 jdbc.properties属性文件如下: jdbc.driverClassName ...

  8. 微信小程序--图片相关问题合辑

    图片上传相关文章 微信小程序多张图片上传功能 微信小程序开发(二)图片上传 微信小程序上传一或多张图片 微信小程序实现选择图片九宫格带预览 ETL:微信小程序之图片上传 微信小程序wx.preview ...

  9. 全栈工程师带你开发 ,node开发人脸识别门禁系统

    效果图:       知识点: 人脸识别SKD部署,  webRTC视频流处理,URL构建blob对象,Canvas映射截图,ajax数据交互,Node图像处理,跨域与413处理,base64解码,p ...

  10. 使用Spring的隐式注解和装配以及使用SpringTest框架

    SpringTestConfiguration 1.加入jar 包spring-test-4.3.9.RELEASE.jar 2.写基本的Component 注意级联状态下  需要给需要调用的属性加入 ...