数据库基础 安装 基础配置 更改 提示字符
1.)MySQL 历史 开源数据库 支持的编程语言 发行版本 下载官网主页
历史
发音:MySQL (/ˌmaɪˌɛsˌkjuːˈɛl/ "My S-Q-L")
“My”是 合伙奠基人Michael Widenius的女儿的名字
“SQL”是结构化查询语言的缩写
最流行的开源关系型数据库系统
由瑞典公司MySQL AB公司开发
合伙人David Axmark, Allan Larsson 和 Michael Widenius
1995年5月23日发行了第一个版本
美国SUN公司于2008年收购MYSQL
美国ORACLE公司于2010年收购SUN公司
当前MySQL属于ORACLE 公司
最流行的开源数据库
全球排名前 10 的 Web 站点中有 9 个使用该数据库
LAMP(linux,apache,mysql,perl/php/python)中的 “M”
社交网站、开源论坛、开源内容管理系统(wordpress,joomla,drupal)广泛使用
超过400家的著名企业使用MYSQL
数据库引擎排名:https://db-engines.com/en/ranking
多种编程语言提供MySQL支持
C
C++
JAVA (JDBC)
.NET (ODBC)
PHP
PYTHON
PERL
官方提供的MySQL连接器:https://dev.mysql.com/downloads/connector/
MySQL支持的操作系统
WINDOWS (32位,64位)
LINUX (32位,64位)
Oracle Linux / Red Hat / CentOS
Canonical Ubuntu
SUSE
Debian
MacOS (32位,64位)
Oracle Solaris
MySQL发行版本
社区版 (无需注册免费下载)
MySQL Community Edition (GPL)
MySQL Cluster (GPL)
企业版 (可以注册后免费下载,商业收费)
MySQL Enterprise Edition
MySQL Cluster CGE
MySQL常用Web连接
http://www.mysql.com官网主页
https://www.mysql.com/downloads/下载
https://dev.mysql.com/doc/文档
https://forums.mysql.com/论坛
https://dev.mysql.com/doc/index-other.html示例数据库
2.)CentOS7 MySQL 的RPM安装 降低安全认证 修改bash提示符 支持utf8中文字符
1.linux安装MySQL软件 查询相关rpm包 启动服务
mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar上传到/root
tar -xvf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar解压
yum -y install net-tools libaio perl需要这个安装包
yum -y install mysql-community-{client,common,server,libs}-*.rpm 安装需要的服务
查询RPM包命令:
rpm -qpi xxx.rpm查询rpm包信息
rpm -qi xxx查询已安装包信息
rpm -qpl xxx.rpm查询rpm包中的文件列表
rpm -ql xxx查询已安装包中的文件列表
yum provides /usr/bin/unzip 查询哪些包提供了某文件
或
yum provides */unzip
yum provides /etc/my.cnf
vim /etc/selinux/config 关闭防火墙 或者 setenforce 0
改为SELINUX=disabled
systemctl status firewalld查看防火墙状态
systemctl start mysqld启动mysql服务 初始化配置
cd /var/lib/mysql
ls 查看服务
vim /var/log/mysqld.log 获取mysql root用户临时密码
grep password /var/log/mysqld.log 或者在路径下查看密码
2.登录MySQL修改密码 降低密码认证安全 查看日志排错
mysql -uroot -p 输入临时密码 (上一步查看的密码)
alter user root@localhost identified by 'AAbb11!!'; 登录后修改密码
show plugins;刷新权限
5.7版MySQL密码认证策略默认较高,要至少8位大小写混合密码;
永久 降低密码认证策略
为练习方便,后续可以降低密码认证策略,使用简单密码
vi /etc/my.cnf
validate_password=0 添加 密码为空
systemctl restart mysqld 重启服务
mysql -uroot -p 输入新改AAbb11!!密码登录
alter user root@localhost identified by “ 123456” 降低认证策略后 可用空密码
mysql>set password=''; 使用空密码
查看日志 错误排查
在mysql初始化、启动、重启过程中,如果遇到问题,可以查看错误日志
tail -f /var/log/mysqld.log错误日志
3.忘记MySQL密码解决办法 修改支持中文
systemctl stop mysqld 停止服务
给systemctl 环境变量MYSQLD_OPTS设置参数 #号下直接执行即可
systemctl set-environment MYSQLD_OPTS='--skip-grant-tables --skip-networking'
systemctl show-environment
注:
skip-grant-tables 跳过授权表 没有这个就没有密码了
skip-networking跳过网络 允许用户通过网络登录(安全起见)
vim /etc/my.cnf
#validate_password=0注释这一行
systemctl start mysqld启动服务 登录
mysql 不用录入用户名和密码就可以登录了 进入mysql
update mysql.user set authentication_string=password('123456') where user='root' and host='localhost';使用SQL语句更新新密码为 123456
quit退出
systemctl set-environment MYSQLD_OPTS='' 置空systemctl 环境变量
vim /etc/my.cnf 取消注释validate_password=0
systemctl restart mysqld 重启服务
mysql -uroot -p 然后输入新密码123456 登录
4.修改/etc/my.cnf支持中文utf8字符集 修改bash提示符
vim /etc/my.cnf修改配置,设置字符集为utf8
character-set-server=utf8
systemctl restart mysqld重起服务
mysql -uroot -p
status登录MySQL查看状态
vi /root/.bash_profile添加变量mysql
export MYSQL_PS1="\u@\h[\d]>" 保存退出
. .bash_profile刷新bash配置 在root下
mysql -uroot -p登录查看 修改后的mysql登录提示符为本机名
修改登录提示符的好处:
*可以看到连接到哪个mysql服务器
*减少人为失误
如果提示符都是mysql>,容易出现误删表、误删库的情况,有可能本来要删除测试库的表,没有注意连接到了生产机,提示符都是mysql>,没有注意,确删除了生产库中对应的表
3.Windows 安装MySQL zip版 文件扩展名
1.windows 7和10 显示文件扩展名
Windows7 控制面板 外观和个性化 文件夹选项 显示隐藏的文件夹 确定
Windows10 打开我的电脑 查看 选项 查看 去掉隐藏已知文件类型的扩展名
2.安装vc2013 和EDITPLUS增强文本编辑器(非必须)
Windows 安装vc2013 (如果没有则安装vc2013)
管理员身份运行
windows自带notepad功能有限
管理员身份运行 然后安装 输入注册码即可
3. MySQL 解压安装包 到F:盘 添加环境变量
1.解压安装包
解压到F盘 改目录名字为 mysql157
2.将MySQL软件bin目录添加到PATH环境变量中
我的电脑 属性 高级系统设置 环境变量 编辑 系统 Path 在后面加bin目录 ;F:\mysql157\bin
4.在MySQL安装目录下创建my.cnf文件
my.cnf 创建文件 粘贴 默认选项
[mysqld]
basedir=f:\mysql157
datadir=f:\mysql157\date
character-set-server=utf8
explicit_defaults_for_timestamp
注:
basedir=f:\mysql目录
datadir=f:\mysql\date 存放位置
explicit_defaults_for_timestamp针对表中timestamp类型的列,默认不填写该列值mysql自主主张修改为0000-00-00 00:00:00,有人不喜欢这样,mysql提供了explicit_defaults_for_timestamp选项,不填写就为null值
5安装MySQL服务 查看服务
Windows系统 以管理员身份启动cmd窗口,否则会遇到权限不足而无法安装
F:\bin\mysqld --install MySQL 安装mysqld服务 MySQL 自定义服务名字
查看MySQL服务
6初始化安装MySQL数据库 启动服务 windows 登录查看
管理员权限cmd窗口运行
有密码对应参数:
F:\mysql157\bin\mysqld --initialize
注意:服务启动后临时密码放在f:\mysql157\data\xxx-PC.err中
无密码对应参数 本次安装选择
F:\mysql157\bin\mysqld --initialize-insecure
启动数据库服务
Win+Rservices.msc
或者打开任务管理器 服务 启动mysql服务
7.MySQL连接测试
mysql -uroot -p 回车
select user,host,authentication_string from mysql.user; 查看mysql库的user表
如果选择有密码初始化,登录mysql后需要修改密码:
alter user root@localhost identified by '123456';设置密码123456
4.MYSQL数据库命令 库 表
1.MySQL 是客户端服务器(C/S)架构
常见客户端程序:
mysql 原始自带客户端程序,面向程序员、管理员
各类编程语言的mysql连接器面向程序员,程序连接器往往放在应用服务器上
图形客户端提供直观高效图形界面,底层仍然是mysql客户端程序
面向:程序员、管理员
mysql workbench(免费)
navicat(收费)
dbforge(收费)
MySQLD服务器端程序
2.MySQL服务 运行状态 (开机启动)
适用于使用systemd的linux版本:
systemctl start mysqld启动MySQL服务
systemctl stop mysqld关闭MySQL服务
systemctl restart mysqld重新启动MySQL服务
systemctl status mysqld查看当前MySQL服务状态
设置/禁止服务开机自动启动
chkconfig [服务] [on|off]
开机运行状态
systemctl status mysqld查看是否开机启动
systemctl enable mysqld设置开机启动
systemctl disable mysqld设置开机不启动
3.客户端 连接 退出MySQL服务 查看服务器版本
连接MySQL (C/S结构)
客户端输入mysql
mysql -uroot -p 登录 输入密码
-u USERNAME 用户名
-h HOST 服务器主机(可以是IP地址或域名)
-p PASSWORD 用户的密码
使用短选项:
mysql -uroot -hlocalhost -p
使用长选项:
mysql --user=root --password
mysql --user=root --host=localhost --password
在客户端退出连接
quit 或 exit
查看服务器版本
status 或 select version();
4.MySQL数据库结构 基本操作命令查看 库 表 行列 库表存放位置
核心存储单元是表,数据放在表中(类似于excel表)
表 放在数据库(相当于目录)下
表 由列和行组成
列(column)也被称为字段(field)
行(row)也被称为记录(record)或数据(data)
一个表至少有一列
一个表可以有0到N行
数据库1(目录1)
表 (文件)
列1,列2,列3,……
行1,行2,行3,……
数据库2(目录2)
表1
表2
数据库3(目录3)
表1
……
查看 数据库 中的数据表
mysql -u root -p ---输入密码123456
show databases; --查看数据库
use mysql; ---进入库 相当于进入目录 ( cd 库)
show tables; ---查看库中的表 表相当于列出目录中的文件 ( ls )
select * from user \G; ---查看mysql库中user表的信息 \G 排序把列的值转成行来看
desc user; ---查看mysql库user表中有哪些列
select * from mysql.user; ---查看mysql库中user表有哪些行
show tables from sys; 查看的数据库不是当前数据库在mysql库中查看sys的表
查看当前使用的数据库 查看当前位于哪个目录中 ( 相当于pwd )
mysql> status
或
mysql> select database();
查看指定mysql数据库中的指定user表有哪些列
DESC命令查询表的结构相关属性
desc mysql.user; 查看mysql库中的user表中列 信息
或者
登录mysql
mysql> show databases;查看数据库
mysql> use mysql;进入mysql库
mysql> show tables;查看库中的表
mysql> desc user;进入user表
desc user; 查看表结构
查看指定mysql数据库中user表有哪些行
mysql>select * from mysql.user;
查看数据库、表、列存放位置
mysql> show variables like 'datadir'; 存放位置
ls -l /var/lib/mysql #数据库对应磁盘的目录
以mysql库user为例查看其磁盘对应的文件
mysql> show tables from mysql like 'user';
ls -l /var/lib/mysql/mysql/user* 数据
mysql库的user表对应/var/lib/mysql/mysql/user.frm,user.MYD,user.MYI
cd /var/lib/mysql/mysql/
Frm存放表结构 strings user.frm 查看user表结构
MYD存放数据strings /var/lib/mysql/mysql/user.MYD 查看数据
MYI存放索引
user表中的列相关信息存放 表结构
mysql> desc mysql.user;
root# strings /var/lib/mysql/mysql/user.frm对应文件存放位置
var/lib/mysql/mysql/user.frmuser
mysql> select user,host,authentication_string from mysql.user;数据
root# strings /var/lib/mysql/mysql/user.MYD
user表中的行可以在/var/lib/mysql/mysql/user.MYD中找到一些内容
5.创建数据库 create database 库; 同时指定字符集和排序规则 查看当前用户 服务器时间
格式:
CREATE DATABASE [IF NOT EXISTS] ‘DB_NAME’;
[IF NOT EXISTS如果创建用户存在就不创建] 创建语句不会报错,会产生告警信息
同时可以指定字符集和排序规则 不能创建同名的数据库,类似于在不能在一个目录下创建同名目录
create database uuuu; --创建uuuu数据库
create database uuuuu charset=utf8; --创建uuuuu数据库 指定字符集
show databases; --查看数据库
创建test数据库,指定库中的表列默认以utf8编码存储字符数据
mysql> create database test character set 'utf8' collate 'utf8_general_ci';
character set 指定字符串以何种编码存储在库中建表,没有指定编码存储,默认使用utf8编码存储表中的字符串
collate定义字符串排序的顺序和比较的方式
utf8_general_ci表示字符串按照UTF8编码比较大小,不区分大小写;ci表示case insensitive
查看当前连接用户
mysql> select user();
查看当前服务器日期和时间
mysql> select now();
6.删除数据库 drop database 库; (慎用)
格式:
DROP DATABASE [IF EXISTS] ‘DB_NAME’; (非常危险,生产环境不建议使用)’
[IF EXISTS] 如果存在就删除,不存在就不删除
drop database uuuu; -删除uuuu库
show databases; -查看所有数据库
7.创建表:create table 表kkk (数据类型,修饰符)
格式: CREATE TABLE 表名(字段1 数据类型 修饰符,字段2 数据类型 修饰符......) [ENGINE=’]
use uuuuu;进入数据库
create table kkk ( id int(5) primary key,name char(16) ); 创建表 第一个为主键
desc kkk;
create table students(id int(5) unsigned auto_increment primary key,name char(16) not null);
create table 创建一个数据表
students 数据表为students
id 第一个字段 有id
int(5) 存放数据是整形5给字节
unsigned 无符号
auto_increment 自动增长
primary key 主键
namename字段
char(16) 16个字符
not null不能为空
查看存储引擎:SHOW ENGINES;
8.删除表; drop table 表;删除数据库 前提不能有人使用这个数据库
drop table [IF EXISTS] ‘tbl_name’; (非常危险,谨慎操作)
[IF EXISTS] 如果存在就删除
drop table kkk; -删除kkk则这个表
show tables; --查看表
注意:
磁盘相关目录会被删除
如果目录中的所有表文件也会被删除
千万不要删除mysql,sys,performance_schema等系统数据库 --系统
否则mysql服务器程序崩溃导致数据库不可用
9.配置MYSQL_PS1环境变量 更改提示符
vi /root/.bash_profile
export MYSQL_PS1="\u@\h[\d]>"
\u 用户
\h 客户端主机
\d 当前选择的数据库
mysql -uroot -p 登录后,登录提示符变为本机名称 root@localhost[(none)]>
10.MySQL常用命令 查看帮助 会话状态 修改命令结束符 返回结果到指定文件中
help 或 \?查看帮助
status 或 \s查看连接会话状态
\d 新结束符修改命令结束符
默认:命令结束符为“;”,客户端程序遇到“;”会把“;”左边的语句发给MySQLD执行,执行结果会发给客户端程序显示
\G 改变返回结果显示方式
\G也是命令结束符。客户端遇到\G会把\G左边的语句发给MySQLD执行,但是返回的结果以垂直的方式显示,适合表的列数多的情况,如果使用“;”由于一行数据屏幕显示不下,会有折行的情况出现,不利于人来查看,使用\G可以解决这个问题。
将返回屏幕执行结果输出一份到指定文件
tee
例如:
tee /tmp/result.txt 屏幕上的输出另存一份到/tmp/result.txt文件中
取消tee使用notee命令
\c 回车取消当前输入的语句
如果输入语句时,缺失单引号或双引号(个数为奇数),不会将该语句发送给服务器执行,此时需要补齐单引号或双引号后在\c取消该语句
查看语句使用语法
查看如何用create database:
help create database
查看如何用create table:
help create table
执行操作系统命令
system 系统命令字
11. 传输库脚本到 mysql source /root/文件位置;
先查看库脚本位置
cat student_utf8.sql 查看
将文件传到mysql
source /root/student_utf8.sql将文件传到mysql
show databases; 查看库
use demo;
show tables;查看表
select * from bmi\G;查看表信息 (所有 排列查看)
5.允许 用户远程登录到 MySQL
对于root用户,MySQL从安全角度考虑,默认仅仅允许本地连接,如果root用户远程登录需要配置,
虚拟机本地登录
mysql -uroot -p
修改root用户名为% %任何主机都可登录
rename user root@localhost to root@'%';
select user,host from mysql.user;查看用户和主机
配置虚拟机防火墙
允许3306端口进入
Firewall-cmd --zone=public --add-port=3306/tcp --permanent
重起防火墙:
firewall-cmd --reload
查看虚拟机IP
Ipconfig(windows)
ip a (linux)
解压windows的mysql压缩包中的mysql.exe到主机d:\(如果主机没有安装mysql)
主机测试连接
mysql -uroot -p -h【虚拟机ip】
主机配置mysql_ps1环境变量(如果没有配置),修改mysql登录提示符:
vi /root/.bash_profile
export MYSQL_PS1="\u@\h[\d]>"
\u 用户
\h 客户端主机
\d 当前选择的数据库
6.安装Navicat Premium 12 桌面数据库
直接安装 不需要改目录 因为是破解版
下一步 我同意 下一步 下一步 下一步 下一步
然后 解压注册机 navicat_keygen5.1.zip 到当前目录
点开第一个 Navicat_Keygen_Patch_v5.1_By_DFoX.exe 管理员运行
先点右边的 Patch
这才是打开
启动程序 然后点注册
在右边点 会自动填写注册码
手动激活
然后点pase 复制过来请求码
生成激活码 激活 确定 重启
数据库基础 安装 基础配置 更改 提示字符
1.)MySQL 历史 开源数据库 支持的编程语言 发行版本 下载官网主页
历史
发音:MySQL (/ˌmaɪˌɛsˌkjuːˈɛl/ "My S-Q-L")
“My”是 合伙奠基人Michael Widenius的女儿的名字
“SQL”是结构化查询语言的缩写
最流行的开源关系型数据库系统
由瑞典公司MySQL AB公司开发
合伙人David Axmark, Allan Larsson 和 Michael Widenius
1995年5月23日发行了第一个版本
美国SUN公司于2008年收购MYSQL
美国ORACLE公司于2010年收购SUN公司
当前MySQL属于ORACLE 公司
最流行的开源数据库
全球排名前 10 的 Web 站点中有 9 个使用该数据库
LAMP(linux,apache,mysql,perl/php/python)中的 “M”
社交网站、开源论坛、开源内容管理系统(wordpress,joomla,drupal)广泛使用
超过400家的著名企业使用MYSQL
数据库引擎排名:https://db-engines.com/en/ranking
多种编程语言提供MySQL支持
C
C++
JAVA (JDBC)
.NET (ODBC)
PHP
PYTHON
PERL
官方提供的MySQL连接器:https://dev.mysql.com/downloads/connector/
MySQL支持的操作系统
WINDOWS (32位,64位)
LINUX (32位,64位)
Oracle Linux / Red Hat / CentOS
Canonical Ubuntu
SUSE
Debian
MacOS (32位,64位)
Oracle Solaris
MySQL发行版本
社区版 (无需注册免费下载)
MySQL Community Edition (GPL)
MySQL Cluster (GPL)
企业版 (可以注册后免费下载,商业收费)
MySQL Enterprise Edition
MySQL Cluster CGE
MySQL常用Web连接
http://www.mysql.com官网主页
https://www.mysql.com/downloads/下载
https://dev.mysql.com/doc/文档
https://forums.mysql.com/论坛
https://dev.mysql.com/doc/index-other.html示例数据库
2.)CentOS7 MySQL 的RPM安装 降低安全认证 修改bash提示符 支持utf8中文字符
1.linux安装MySQL软件 查询相关rpm包 启动服务
mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar上传到/root
tar -xvf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar解压
yum -y install net-tools libaio perl需要这个安装包
yum -y install mysql-community-{client,common,server,libs}-*.rpm 安装需要的服务
查询RPM包命令:
rpm -qpi xxx.rpm查询rpm包信息
rpm -qi xxx查询已安装包信息
rpm -qpl xxx.rpm查询rpm包中的文件列表
rpm -ql xxx查询已安装包中的文件列表
yum provides /usr/bin/unzip 查询哪些包提供了某文件
或
yum provides */unzip
yum provides /etc/my.cnf
vim /etc/selinux/config 关闭防火墙 或者 setenforce 0
改为SELINUX=disabled
systemctl status firewalld查看防火墙状态
systemctl start mysqld启动mysql服务 初始化配置
cd /var/lib/mysql
ls 查看服务
vim /var/log/mysqld.log 获取mysql root用户临时密码
grep password /var/log/mysqld.log 或者在路径下查看密码
2.登录MySQL修改密码 降低密码认证安全 查看日志排错
mysql -uroot -p 输入临时密码 (上一步查看的密码)
alter user root@localhost identified by 'AAbb11!!'; 登录后修改密码
show plugins;刷新权限
5.7版MySQL密码认证策略默认较高,要至少8位大小写混合密码;
永久 降低密码认证策略
为练习方便,后续可以降低密码认证策略,使用简单密码
vi /etc/my.cnf
validate_password=0 添加 密码为空
systemctl restart mysqld 重启服务
mysql -uroot -p 输入新改AAbb11!!密码登录
alter user root@localhost identified by “ 123456” 降低认证策略后 可用空密码
mysql>set password=''; 使用空密码
查看日志 错误排查
在mysql初始化、启动、重启过程中,如果遇到问题,可以查看错误日志
tail -f /var/log/mysqld.log错误日志
3.忘记MySQL密码解决办法 修改支持中文
systemctl stop mysqld 停止服务
给systemctl 环境变量MYSQLD_OPTS设置参数 #号下直接执行即可
systemctl set-environment MYSQLD_OPTS='--skip-grant-tables --skip-networking'
systemctl show-environment
注:
skip-grant-tables 跳过授权表 没有这个就没有密码了
skip-networking跳过网络 允许用户通过网络登录(安全起见)
vim /etc/my.cnf
#validate_password=0注释这一行
systemctl start mysqld启动服务 登录
mysql 不用录入用户名和密码就可以登录了 进入mysql
update mysql.user set authentication_string=password('123456') where user='root' and host='localhost';使用SQL语句更新新密码为 123456
quit退出
systemctl set-environment MYSQLD_OPTS='' 置空systemctl 环境变量
vim /etc/my.cnf 取消注释validate_password=0
systemctl restart mysqld 重启服务
mysql -uroot -p 然后输入新密码123456 登录
4.修改/etc/my.cnf支持中文utf8字符集 修改bash提示符
vim /etc/my.cnf修改配置,设置字符集为utf8
character-set-server=utf8
systemctl restart mysqld重起服务
mysql -uroot -p
status登录MySQL查看状态
vi /root/.bash_profile添加变量mysql
export MYSQL_PS1="\u@\h[\d]>" 保存退出
. .bash_profile刷新bash配置 在root下
mysql -uroot -p登录查看 修改后的mysql登录提示符为本机名
修改登录提示符的好处:
*可以看到连接到哪个mysql服务器
*减少人为失误
如果提示符都是mysql>,容易出现误删表、误删库的情况,有可能本来要删除测试库的表,没有注意连接到了生产机,提示符都是mysql>,没有注意,确删除了生产库中对应的表
3.Windows 安装MySQL zip版 文件扩展名
1.windows 7和10 显示文件扩展名
Windows7 控制面板 外观和个性化 文件夹选项 显示隐藏的文件夹 确定
Windows10 打开我的电脑 查看 选项 查看 去掉隐藏已知文件类型的扩展名
2.安装vc2013 和EDITPLUS增强文本编辑器(非必须)
Windows 安装vc2013 (如果没有则安装vc2013)
管理员身份运行
windows自带notepad功能有限
管理员身份运行 然后安装 输入注册码即可
3. MySQL 解压安装包 到F:盘 添加环境变量
1.解压安装包
解压到F盘 改目录名字为 mysql157
2.将MySQL软件bin目录添加到PATH环境变量中
我的电脑 属性 高级系统设置 环境变量 编辑 系统 Path 在后面加bin目录 ;F:\mysql157\bin
4.在MySQL安装目录下创建my.cnf文件
my.cnf 创建文件 粘贴 默认选项
[mysqld]
basedir=f:\mysql157
datadir=f:\mysql157\date
character-set-server=utf8
explicit_defaults_for_timestamp
注:
basedir=f:\mysql目录
datadir=f:\mysql\date 存放位置
explicit_defaults_for_timestamp针对表中timestamp类型的列,默认不填写该列值mysql自主主张修改为0000-00-00 00:00:00,有人不喜欢这样,mysql提供了explicit_defaults_for_timestamp选项,不填写就为null值
5安装MySQL服务 查看服务
Windows系统 以管理员身份启动cmd窗口,否则会遇到权限不足而无法安装
F:\bin\mysqld --install MySQL 安装mysqld服务 MySQL 自定义服务名字
查看MySQL服务
6初始化安装MySQL数据库 启动服务 windows 登录查看
管理员权限cmd窗口运行
有密码对应参数:
F:\mysql157\bin\mysqld --initialize
注意:服务启动后临时密码放在f:\mysql157\data\xxx-PC.err中
无密码对应参数 本次安装选择
F:\mysql157\bin\mysqld --initialize-insecure
启动数据库服务
Win+Rservices.msc
或者打开任务管理器 服务 启动mysql服务
7.MySQL连接测试
mysql -uroot -p 回车
select user,host,authentication_string from mysql.user; 查看mysql库的user表
如果选择有密码初始化,登录mysql后需要修改密码:
alter user root@localhost identified by '123456';设置密码123456
4.MYSQL数据库命令 库 表
1.MySQL 是客户端服务器(C/S)架构
常见客户端程序:
mysql 原始自带客户端程序,面向程序员、管理员
各类编程语言的mysql连接器面向程序员,程序连接器往往放在应用服务器上
图形客户端提供直观高效图形界面,底层仍然是mysql客户端程序
面向:程序员、管理员
mysql workbench(免费)
navicat(收费)
dbforge(收费)
MySQLD服务器端程序
2.MySQL服务 运行状态 (开机启动)
适用于使用systemd的linux版本:
systemctl start mysqld启动MySQL服务
systemctl stop mysqld关闭MySQL服务
systemctl restart mysqld重新启动MySQL服务
systemctl status mysqld查看当前MySQL服务状态
设置/禁止服务开机自动启动
chkconfig [服务] [on|off]
开机运行状态
systemctl status mysqld查看是否开机启动
systemctl enable mysqld设置开机启动
systemctl disable mysqld设置开机不启动
3.客户端 连接 退出MySQL服务 查看服务器版本
连接MySQL (C/S结构)
客户端输入mysql
mysql -uroot -p 登录 输入密码
-u USERNAME 用户名
-h HOST 服务器主机(可以是IP地址或域名)
-p PASSWORD 用户的密码
使用短选项:
mysql -uroot -hlocalhost -p
使用长选项:
mysql --user=root --password
mysql --user=root --host=localhost --password
在客户端退出连接
quit 或 exit
查看服务器版本
status 或 select version();
4.MySQL数据库结构 基本操作命令查看 库 表 行列 库表存放位置
核心存储单元是表,数据放在表中(类似于excel表)
表 放在数据库(相当于目录)下
表 由列和行组成
列(column)也被称为字段(field)
行(row)也被称为记录(record)或数据(data)
一个表至少有一列
一个表可以有0到N行
数据库1(目录1)
表 (文件)
列1,列2,列3,……
行1,行2,行3,……
数据库2(目录2)
表1
表2
数据库3(目录3)
表1
……
查看 数据库 中的数据表
mysql -u root -p ---输入密码123456
show databases; --查看数据库
use mysql; ---进入库 相当于进入目录 ( cd 库)
show tables; ---查看库中的表 表相当于列出目录中的文件 ( ls )
select * from user \G; ---查看mysql库中user表的信息 \G 排序把列的值转成行来看
desc user; ---查看mysql库user表中有哪些列
select * from mysql.user; ---查看mysql库中user表有哪些行
show tables from sys; 查看的数据库不是当前数据库在mysql库中查看sys的表
查看当前使用的数据库 查看当前位于哪个目录中 ( 相当于pwd )
mysql> status
或
mysql> select database();
查看指定mysql数据库中的指定user表有哪些列
DESC命令查询表的结构相关属性
desc mysql.user; 查看mysql库中的user表中列 信息
或者
登录mysql
mysql> show databases;查看数据库
mysql> use mysql;进入mysql库
mysql> show tables;查看库中的表
mysql> desc user;进入user表
desc user; 查看表结构
查看指定mysql数据库中user表有哪些行
mysql>select * from mysql.user;
查看数据库、表、列存放位置
mysql> show variables like 'datadir'; 存放位置
ls -l /var/lib/mysql #数据库对应磁盘的目录
以mysql库user为例查看其磁盘对应的文件
mysql> show tables from mysql like 'user';
ls -l /var/lib/mysql/mysql/user* 数据
mysql库的user表对应/var/lib/mysql/mysql/user.frm,user.MYD,user.MYI
cd /var/lib/mysql/mysql/
Frm存放表结构 strings user.frm 查看user表结构
MYD存放数据strings /var/lib/mysql/mysql/user.MYD 查看数据
MYI存放索引
user表中的列相关信息存放 表结构
mysql> desc mysql.user;
root# strings /var/lib/mysql/mysql/user.frm对应文件存放位置
var/lib/mysql/mysql/user.frmuser
mysql> select user,host,authentication_string from mysql.user;数据
root# strings /var/lib/mysql/mysql/user.MYD
user表中的行可以在/var/lib/mysql/mysql/user.MYD中找到一些内容
5.创建数据库 create database 库; 同时指定字符集和排序规则 查看当前用户 服务器时间
格式:
CREATE DATABASE [IF NOT EXISTS] ‘DB_NAME’;
[IF NOT EXISTS如果创建用户存在就不创建] 创建语句不会报错,会产生告警信息
同时可以指定字符集和排序规则 不能创建同名的数据库,类似于在不能在一个目录下创建同名目录
create database uuuu; --创建uuuu数据库
create database uuuuu charset=utf8; --创建uuuuu数据库 指定字符集
show databases; --查看数据库
创建test数据库,指定库中的表列默认以utf8编码存储字符数据
mysql> create database test character set 'utf8' collate 'utf8_general_ci';
character set 指定字符串以何种编码存储在库中建表,没有指定编码存储,默认使用utf8编码存储表中的字符串
collate定义字符串排序的顺序和比较的方式
utf8_general_ci表示字符串按照UTF8编码比较大小,不区分大小写;ci表示case insensitive
查看当前连接用户
mysql> select user();
查看当前服务器日期和时间
mysql> select now();
6.删除数据库 drop database 库; (慎用)
格式:
DROP DATABASE [IF EXISTS] ‘DB_NAME’; (非常危险,生产环境不建议使用)’
[IF EXISTS] 如果存在就删除,不存在就不删除
drop database uuuu; -删除uuuu库
show databases; -查看所有数据库
7.创建表:create table 表kkk (数据类型,修饰符)
格式: CREATE TABLE 表名(字段1 数据类型 修饰符,字段2 数据类型 修饰符......) [ENGINE=’]
use uuuuu;进入数据库
create table kkk ( id int(5) primary key,name char(16) ); 创建表 第一个为主键
desc kkk;
create table students(id int(5) unsigned auto_increment primary key,name char(16) not null);
create table 创建一个数据表
students 数据表为students
id 第一个字段 有id
int(5) 存放数据是整形5给字节
unsigned 无符号
auto_increment 自动增长
primary key 主键
namename字段
char(16) 16个字符
not null不能为空
查看存储引擎:SHOW ENGINES;
8.删除表; drop table 表;删除数据库 前提不能有人使用这个数据库
drop table [IF EXISTS] ‘tbl_name’; (非常危险,谨慎操作)
[IF EXISTS] 如果存在就删除
drop table kkk; -删除kkk则这个表
show tables; --查看表
注意:
磁盘相关目录会被删除
如果目录中的所有表文件也会被删除
千万不要删除mysql,sys,performance_schema等系统数据库 --系统
否则mysql服务器程序崩溃导致数据库不可用
9.配置MYSQL_PS1环境变量 更改提示符
vi /root/.bash_profile
export MYSQL_PS1="\u@\h[\d]>"
\u 用户
\h 客户端主机
\d 当前选择的数据库
mysql -uroot -p 登录后,登录提示符变为本机名称 root@localhost[(none)]>
10.MySQL常用命令 查看帮助 会话状态 修改命令结束符 返回结果到指定文件中
help 或 \?查看帮助
status 或 \s查看连接会话状态
\d 新结束符修改命令结束符
默认:命令结束符为“;”,客户端程序遇到“;”会把“;”左边的语句发给MySQLD执行,执行结果会发给客户端程序显示
\G 改变返回结果显示方式
\G也是命令结束符。客户端遇到\G会把\G左边的语句发给MySQLD执行,但是返回的结果以垂直的方式显示,适合表的列数多的情况,如果使用“;”由于一行数据屏幕显示不下,会有折行的情况出现,不利于人来查看,使用\G可以解决这个问题。
将返回屏幕执行结果输出一份到指定文件
tee
例如:
tee /tmp/result.txt 屏幕上的输出另存一份到/tmp/result.txt文件中
取消tee使用notee命令
\c 回车取消当前输入的语句
如果输入语句时,缺失单引号或双引号(个数为奇数),不会将该语句发送给服务器执行,此时需要补齐单引号或双引号后在\c取消该语句
查看语句使用语法
查看如何用create database:
help create database
查看如何用create table:
help create table
执行操作系统命令
system 系统命令字
11. 传输库脚本到 mysql source /root/文件位置;
先查看库脚本位置
cat student_utf8.sql 查看
将文件传到mysql
source /root/student_utf8.sql将文件传到mysql
’
show databases; 查看库
use demo;
show tables;查看表
select * from bmi\G;查看表信息 (所有 排列查看)
5.允许 用户远程登录到 MySQL
对于root用户,MySQL从安全角度考虑,默认仅仅允许本地连接,如果root用户远程登录需要配置,
虚拟机本地登录
mysql -uroot -p
修改root用户名为% %任何主机都可登录
rename user root@localhost to root@'%';
select user,host from mysql.user;查看用户和主机
配置虚拟机防火墙
允许3306端口进入
Firewall-cmd --zone=public --add-port=3306/tcp --permanent
重起防火墙:
firewall-cmd --reload
查看虚拟机IP
Ipconfig(windows)
ip a (linux)
解压windows的mysql压缩包中的mysql.exe到主机d:\(如果主机没有安装mysql)
主机测试连接
mysql -uroot -p -h【虚拟机ip】
主机配置mysql_ps1环境变量(如果没有配置),修改mysql登录提示符:
vi /root/.bash_profile
export MYSQL_PS1="\u@\h[\d]>"
\u 用户
\h 客户端主机
\d 当前选择的数据库