MySQL 入坑指南
本篇文章主要记录自己在使用配置 MySQL 过程中的注意点和配置流程,因为自己常常帮别人配置 MySQL 环境,但是每次都需要重新查看下资料,我就自己记录下,为快速配置 MySQL 环境而节省时间。
MySQL 的安装
下载安装包
个人建议选择zip包安装,这样Windows和Linux下配置过程很相似
这里还要讲下有的下载的 5.7 版本 里面没有 data 目录,这个常常会导致安装失败,建议下载压缩包后解压看看里面有没有 data 目录,选择有 data 目录 的压缩包安装较好,如果没有可以从以前或者别人的目录里拷贝,上面百度云里的 5.6 版本 是有的。
解压到安装目录
尽量避开系统盘,这样便于数据的恢复
编辑配置文件
将 my-default.ini 复制为 my.ini 并修改如下两个配置:
1
2basedir = 解压后目录 ( bin 文件上一级目录 )
datadir = 解压后目录下的 data 目录
比如:
1
2basedir = D:\DevePrograms\mysql-5.6.21-winx64
datadir = D:\DevePrograms\mysql-5.6.21-winx64\data
安装
管理员身份 打开命令 cmd 窗口,cd 到 bin 文件夹下。( Windows7 的话通常点击开始 – 附件 – 命令提示符右击 – 以管理员方式打开 )
输入 mysqld -install ( 注意是 mysqld 而不是 mysql, 有个 d ),提示安装成功即可。
如果提示不成功,则 mysqld -remove, 再执行 mysqld -install.
开启 / 关闭 mysql 服务
MySQL 装成功实际上就是 MySQL 服务装成功,服务的开启与否决定能不能使用 MySQL 数据库。
开启服务:net start mysql
关闭服务:net stop mysql
如果大家按照第四部安装的,通常默认服务是开机自启动的,默认可以正常使用,如果用了什么安全管家加速电脑开机关闭了 MySQL 的服务,则就需要在使用 MySQL 服务前先开启下 MySQL 服务。
大家可以 [ 右击我的电脑 – 管理 – 服务和应用程序展开 – 服务 ] 里面就可以找到 MySQL 服务,如果大家想禁止开机自启或者想开机自启都可以在这里设置。
登录使用 MySQL
开启服务后,用 mysql -u root -p 回车后会让输入密码,默认密码为空,直接再回车就进入了 MySQL 数据库操作里了。
MySQL 编码设置
配置文件设置
在 my.ini 文件里写入以下配置
1
2
3
4
5
6[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
如果没有 my.ini 配置文件,则通过复制 my-default.ini 文件为 my.ini文 件再进行设置。
重启 MySQL 服务让设置生效:先关闭服务 net stop mysql, 再启动服务 net start mysql.
创建数据库和表规范
创建数据库时带上编码集:
1create database db_test character set 'utf8' collate 'utf8_general_ci';
创建表带上编码集合和引擎:
1create table tb_muser(id int not null auto_increment primary key,username char(10)) engine=InnoDB default charset=utf8;
查看已经创建的数据库编码格式:
1show create database test;
查看已经创建的表编码格式:
1show create table tb_muser;
编码排错语句
显示所有设置项目的编码:
1
2
3
4
5
6
7
8
9show variables like 'character_%';
// 通常有如下名称编码设置
character_set_client
character_set_connection
character_set_server
character_set_database
character_set_results
character_set_server
character_set_system
通过形似这样 set character_set_NAME=utf8/gbk 的命令设置上面查看到的非标准编码
1set character_set_server=utf8;
MySQL 常用命令
连接 MySQL
连接命令:
1
2mysql -h 服务器ip -u 用户名 -p// 连接通用命令
password:输入密码
例如:
1
2mysql –h localhost/127.0.0.1 –u root –p // 连接本地计算机的 MySQL
// 链接本地计算机 -h 也可以不写,如:mysql –u root –p
root 密码重置
由于初始密码为空,如果想修改密码,首先要退出数据库,然后
1mysqladmin -u root passwrod 1234
假设已经设置过密码了,又想修改,则命令如下:
方法一:
1
2mysql -u root -p//需要先以 root 身份登录到数据库
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
方法二:
1
2
3
4mysql -u root -p//也需要登录
use mysql;
UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root';
FLUSH PRIVILEGES;// 刷新权限
创建账户
grant 语句
1
2
3// grant语句 所有权限 所有数据库 用户 登录地点 用户密码
grant all privileges on *.* to 'jiyi2'@'%' identified by '123456' with grant option;
// %号代表所有地方登录
例如:
1
2
3
4grant reload,process on *.* to 'jiyi3'@'localhost';
// 给部分权限给jiyi3,localhost为本地登录
grant usage on *.* to 'jiyi4'@'localhost';
// 不给权限给用户jiyi4
insert 语句
1
2
3
4insert into user values('localhost/%','jiyi',PASSWORD('123456'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
//登录地(本地或者所有地),用户名,密码,后面的Y都是权限,所有都是Y相当于all privileges
insert into user (Host,User,Password) VALUES('localhost','jiyi','123456');
//指定地点用户
注意:insert 语句最后都要加一句flush privileges; 以刷新权限列表。
MySQL 导入 SQL 文件
MySQL 导入命令:
1
2
3
4source /data/sql/createDB.sql;
// 该命令是将放在 mysql 文件夹内的 data/sql 文件夹内的.sql文件导入到 MySQL 中
source D:/createDB.sql;
// 这是将放在 D 盘的 .sql 文件导入到 MySQL 中
MySQL 备份命令:
1
2
3
4
5// 结构:
mysqldump -u 用户名 -p 数据库名 表名 > 导出的文件名
// 如:
mysqldump -uroot -p jiyidata > jiyidata.sql// 指定数据库
mysqldump -uroot -p jiyidata jiyitable > jiyitable.sql// 指定数据库表
MySQL 导入文本数据
1、文本数据应符合的格式:字段数据之间用 tab 键隔开,null 值用 \n 来代替.
例:
1
23 rose 深圳二中 1976-10-10
4 mike 深圳一中 1975-12-23
2、数据传入命令
1
2
3# load data local infile "文件名" into table 表名;
# 如:
load data local infile "jiyi.txt" into table jiyitable;
注意:你最好将文件复制到 \mysql\bin 目录下,并且要先用 use 命令打表所在的库。
数据库和表语句
1
2
3
4
5create database jiyidata;// 创建 jiyidata 数据库
show databases;// 显示所有数据库
use jiyidata;// 使用 jiyidata 数据库,切换到 jiyidata 数据库下
show tables;// 展示 jiyidata 中的所有表格
drop table if exists jiyitable;// 如果存在 jiyitable 就删除
创建表
1create table jiyitable(id int not null primary key auto_increment,phonenumber varchar(20) not null unique);
不为空 not null
主键 primary key
自增长 auto_increment
唯一 unique
默认值 default '1' 默认为1
id int(11) unsigned 代表 int 无符号,即都表示正数,这样比 signed 表示的更多数,其实当我们在选择使用 int 的类型的时候,不论是 int(3) 还是 int(11),它在数据库里面存储的都是 4 个字节的长度,在使用 int(3) 的时候如果你输入的是 10,会默认给你存储位 010,也就是说这个 3 代表的是默认的一个长度,当你不足 3 位时,会帮你不全,当你超过 3 位时,就没有任何的影响。
表基本操作语句
查、增、改、删
1
2
3
4
5
6
7
8
9// sql语句大概分为4中情况
// 1. 查询
select * from usertable;
// 2. 插入
insert into usertable(id,phonenumber) values('3','13140999025');
// 3. 更新
update usertable set phonenumber='13140999029' where id='3';
// 4. 删除
delete from usertable where id='3';