前言: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源,这里我选了10.2的版本

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

[mariadb]

name = MariaDB

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

gpgcheck=

若有其他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. Java第三十五天,用JDBC操作MySQL数据库(一),基础入门

    一.JDBC的概念 Java DataBase Connectivity 从字面意思我们也不难理解,就是用Java语言连接数据库的意思 JDBC定义了Java语言操作所有关系型数据库的规则(接口).即 ...

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

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

  5. Mysql数据库介绍、安装和配置文件

    Mysql数据库介绍.安装和配置文件 MySQL数据库介绍 mysql是开源关系型数据库,遵循GPL协议. mysql的特点是性能卓越且服务稳定,开源,无版本限制,成本低,单进程多线程,多用户,基于C ...

  6. MySQL数据库服务器(YUM)安装

    1. 概述2. 部署过程2.1 虚拟机console的NFS服务端配置2.2 虚拟机node15的NFS客户端配置2.3 虚拟机安装MySQL环境2.4 配置MySQL3. 错误及解决3.1 启动失败 ...

  7. MySQL数据库离线包安装与注册

    本文主要介绍了MySQL数据库的离线安装和将MySQL服务注册为Windows应用服务的主要步骤. 1.下在安装程序包 MySQL Community Server 5.6.15 官方下载地址http ...

  8. Linux系统环境下MySQL数据库源代码的安装

    Linux系统环境下MySQL数据库源代码的安装 基本环境:CentOS Linux release 7.8.2003 (Core).MySQL5.6 一.      安装环境准备 若要在Linux系 ...

  9. Mysql数据库的通用安装方法

    安装方式简介 Mysql数据库也时不时的用过一段时间,具体使用的功能都比较浅显,没有具体深入学习.最近一段在公司部署iNeedle系统时经常避免不了要安装apache和Mysql数据库.一般Mysql ...

随机推荐

  1. 使用mobx项目开发总结(不再更新)

      mobx的优点 1,使用@observer的组件真正实现按需更新,只有监听的数据发生变化,它才会re-render,尽管父组件发生更新,但是子组件只要有@observer,则不会触发更新,类似于实 ...

  2. 第50章:Java操作MongoDB-MongoDB和Spring

    ① Spring通过Spring Data MongoDB模块来集成和支持MongoDB ②Maven加入lib包 <dependency> <groupId>org.spri ...

  3. 初识大数据(三. Hadoop与MPP数据仓库)

    MPP代表大规模并行处理,这是网格计算中所有单独节点参与协调计算的方法. 是将任务并行的分散到多个服务器和节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的结果. MPP DBMS是 ...

  4. 用JavaScript制作简单的计算器

    <html > <head> <title>简单计算器</title> <style type="text/css"> ...

  5. 《python语言程序设计》_第二章笔记之2.13_软件开发流程

    #程序1: 设计:由用户键入利率.贷款数以及贷款的年限,系统计算出每月还贷数和总还款数 注意:输入的年利率是带有百分比的数字,例如:4.5%.程序需要将它除以100转换成小数.因为一年有12个月,所以 ...

  6. 调用接口,发送https请求

    调用https接口有两种方式 一:是导入证书; 证书调用https请求本人还不知道,希望看见此博客的大神给我回复. 二:是创建信任管理器. 第一步:实现X509TrustManager接口,里面的方法 ...

  7. Appium + Java 测试 [百度地图] APP的一段简单脚本

    1. 流程 进入 app ,手动处理前段预处理,程序一直等候到达指定搜索地名页面,填入[南通大学],点击[搜索] 2. Java 脚本 // part 1: 引入需要的包 import io.appi ...

  8. Jenkins的初级应用(2)-Invoke Phing targets

    Invoke Phing targets这个插件主要是读取xml形式包括自动化测试打包部署的配置文件,然后根据流程走下来.用phing命令读取并执行xml配置文件,然后执行定义的步骤.比如check. ...

  9. Elasticsearch简介和安装对比

    各位小伙伴,又到了本期分享大数据技术的时间,本次给大伙带来的是Elasticsearch这个技术,闲话不多聊,我们开始进入正题. 一.什么是elasticsearch Elasticsearch是一个 ...

  10. 微信小程序中如何使用WebSocket实现长连接(含完整源码)

    本文由腾讯云技术团队原创,感谢作者的分享. 1.前言   微信小程序提供了一套在微信上运行小程序的解决方案,有比较完整的框架.组件以及 API,在这个平台上面的想象空间很大.腾讯云研究了一番之后,发现 ...