Mysql数据库的二进制安装和基础入门操作
前言: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数据库的二进制安装和基础入门操作的更多相关文章
- Mysql的二进制安装和基础入门操作
前言:Mysql数据库,知识非常的多,要想学精学通这块知识,估计也要花费和学linux一样的精力和时间.小编也是只会些毛皮,给大家分享一下~ 一.MySQL安装 (1)安装方式: 1 .程序包yum安 ...
- MySQL数据库的二进制安装、源码编译和基础入门操作
一.MySQL安装 (1)安装方式: 1 .程序包yum安装 优点:安装快,简单 缺点:定死了各个文件的地方,需要修改里边的相关配置文件,很麻烦 2 .二进制格式的程序包:展开至特定路径,并经过简单配 ...
- Java第三十五天,用JDBC操作MySQL数据库(一),基础入门
一.JDBC的概念 Java DataBase Connectivity 从字面意思我们也不难理解,就是用Java语言连接数据库的意思 JDBC定义了Java语言操作所有关系型数据库的规则(接口).即 ...
- mysql二进制安装及基础操作
mysql二进制安装及基础操作 环境说明: 系统版本 CentOS 6.9 x86_64 软件版本 mysql-5.6.36-linux-glibc2.5-x86_64 1.安装 采用二进 ...
- Mysql数据库介绍、安装和配置文件
Mysql数据库介绍.安装和配置文件 MySQL数据库介绍 mysql是开源关系型数据库,遵循GPL协议. mysql的特点是性能卓越且服务稳定,开源,无版本限制,成本低,单进程多线程,多用户,基于C ...
- MySQL数据库服务器(YUM)安装
1. 概述2. 部署过程2.1 虚拟机console的NFS服务端配置2.2 虚拟机node15的NFS客户端配置2.3 虚拟机安装MySQL环境2.4 配置MySQL3. 错误及解决3.1 启动失败 ...
- MySQL数据库离线包安装与注册
本文主要介绍了MySQL数据库的离线安装和将MySQL服务注册为Windows应用服务的主要步骤. 1.下在安装程序包 MySQL Community Server 5.6.15 官方下载地址http ...
- Linux系统环境下MySQL数据库源代码的安装
Linux系统环境下MySQL数据库源代码的安装 基本环境:CentOS Linux release 7.8.2003 (Core).MySQL5.6 一. 安装环境准备 若要在Linux系 ...
- Mysql数据库的通用安装方法
安装方式简介 Mysql数据库也时不时的用过一段时间,具体使用的功能都比较浅显,没有具体深入学习.最近一段在公司部署iNeedle系统时经常避免不了要安装apache和Mysql数据库.一般Mysql ...
随机推荐
- 使用mobx项目开发总结(不再更新)
mobx的优点 1,使用@observer的组件真正实现按需更新,只有监听的数据发生变化,它才会re-render,尽管父组件发生更新,但是子组件只要有@observer,则不会触发更新,类似于实 ...
- 第50章:Java操作MongoDB-MongoDB和Spring
① Spring通过Spring Data MongoDB模块来集成和支持MongoDB ②Maven加入lib包 <dependency> <groupId>org.spri ...
- 初识大数据(三. Hadoop与MPP数据仓库)
MPP代表大规模并行处理,这是网格计算中所有单独节点参与协调计算的方法. 是将任务并行的分散到多个服务器和节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的结果. MPP DBMS是 ...
- 用JavaScript制作简单的计算器
<html > <head> <title>简单计算器</title> <style type="text/css"> ...
- 《python语言程序设计》_第二章笔记之2.13_软件开发流程
#程序1: 设计:由用户键入利率.贷款数以及贷款的年限,系统计算出每月还贷数和总还款数 注意:输入的年利率是带有百分比的数字,例如:4.5%.程序需要将它除以100转换成小数.因为一年有12个月,所以 ...
- 调用接口,发送https请求
调用https接口有两种方式 一:是导入证书; 证书调用https请求本人还不知道,希望看见此博客的大神给我回复. 二:是创建信任管理器. 第一步:实现X509TrustManager接口,里面的方法 ...
- Appium + Java 测试 [百度地图] APP的一段简单脚本
1. 流程 进入 app ,手动处理前段预处理,程序一直等候到达指定搜索地名页面,填入[南通大学],点击[搜索] 2. Java 脚本 // part 1: 引入需要的包 import io.appi ...
- Jenkins的初级应用(2)-Invoke Phing targets
Invoke Phing targets这个插件主要是读取xml形式包括自动化测试打包部署的配置文件,然后根据流程走下来.用phing命令读取并执行xml配置文件,然后执行定义的步骤.比如check. ...
- Elasticsearch简介和安装对比
各位小伙伴,又到了本期分享大数据技术的时间,本次给大伙带来的是Elasticsearch这个技术,闲话不多聊,我们开始进入正题. 一.什么是elasticsearch Elasticsearch是一个 ...
- 微信小程序中如何使用WebSocket实现长连接(含完整源码)
本文由腾讯云技术团队原创,感谢作者的分享. 1.前言 微信小程序提供了一套在微信上运行小程序的解决方案,有比较完整的框架.组件以及 API,在这个平台上面的想象空间很大.腾讯云研究了一番之后,发现 ...