MySQL 简单配置与基本操作

MySQL 入坑指南

本篇文章主要记录自己在使用配置 MySQL 过程中的注意点和配置流程,因为自己常常帮别人配置 MySQL 环境,但是每次都需要重新查看下资料,我就自己记录下,为快速配置 MySQL 环境而节省时间。

MySQL 的安装

下载安装包

个人建议选择zip包安装,这样Windows和Linux下配置过程很相似

5.7 或者最新版官网地址:http://dev.mysql.com/downloads/mysql/

5.6 版本百度云地址:http://pan.baidu.com/s/1b6hLCE

这里还要讲下有的下载的 5.7 版本 里面没有 data 目录,这个常常会导致安装失败,建议下载压缩包后解压看看里面有没有 data 目录,选择有 data 目录 的压缩包安装较好,如果没有可以从以前或者别人的目录里拷贝,上面百度云里的 5.6 版本 是有的。

解压到安装目录

尽量避开系统盘,这样便于数据的恢复

编辑配置文件

my-default.ini 复制为 my.ini 并修改如下两个配置:

1
2
basedir = 解压后目录 ( bin 文件上一级目录 )
datadir = 解压后目录下的 data 目录

比如:

1
2
basedir = D:\DevePrograms\mysql-5.6.21-winx64
datadir = D:\DevePrograms\mysql-5.6.21-winx64\data

安装

管理员身份 打开命令 cmd 窗口,cdbin 文件夹下。( 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

开启服务后,用 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.

创建数据库和表规范

创建数据库时带上编码集:

1
create database db_test character set 'utf8' collate 'utf8_general_ci';

创建表带上编码集合和引擎:

1
create table tb_muser(id int not null auto_increment primary key,username char(10)) engine=InnoDB default charset=utf8;

查看已经创建的数据库编码格式:

1
show create database test;

查看已经创建的表编码格式:

1
show create table tb_muser;

编码排错语句

显示所有设置项目的编码:

1
2
3
4
5
6
7
8
9
show 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 的命令设置上面查看到的非标准编码

1
set character_set_server=utf8;

MySQL 常用命令

连接 MySQL

连接命令:

1
2
mysql -h 服务器ip -u 用户名 -p	// 连接通用命令
password:输入密码

例如:

1
2
mysql –h localhost/127.0.0.1 –u root –p // 连接本地计算机的 MySQL
// 链接本地计算机 -h 也可以不写,如:mysql –u root –p

root 密码重置

由于初始密码为空,如果想修改密码,首先要退出数据库,然后

1
mysqladmin -u root passwrod 1234

假设已经设置过密码了,又想修改,则命令如下:

方法一:

1
2
mysql -u root -p		//需要先以 root 身份登录到数据库
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');

方法二:

1
2
3
4
mysql -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
4
grant reload,process on *.* to 'jiyi3'@'localhost';
// 给部分权限给jiyi3,localhost为本地登录
grant usage on *.* to 'jiyi4'@'localhost';
// 不给权限给用户jiyi4

insert 语句

1
2
3
4
insert 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
4
source /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
2
3 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
5
create database jiyidata;	// 创建 jiyidata 数据库
show databases; // 显示所有数据库
use jiyidata; // 使用 jiyidata 数据库,切换到 jiyidata 数据库下
show tables; // 展示 jiyidata 中的所有表格
drop table if exists jiyitable; // 如果存在 jiyitable 就删除

创建表

1
create table jiyitable(id int not null primary key auto_increment,phonenumber varchar(20) not null unique);
  1. 不为空 not null
  2. 主键 primary key
  3. 自增长 auto_increment
  4. 唯一 unique
  5. 默认值 default '1' 默认为1
  6. 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';
苟且一下