一、简介

MySQL是最流行的开放源码SQL数据库管理系统,它是由MySQL AB公司开发、发布并支持的。有以下特点:

MySQL是一种数据库管理系统。

MySQL是一种关联数据库管理系统。

MySQL软件是一种开放源码软件。

MySQL数据库服务器具有快速、可靠和易于使用的特点。

MySQL服务器工作在客户端/服务器模式下,或嵌入式系统中。

有大量可用的共享MySQL软件。

MySQL表最大能达到多少?

InnoDB存储引擎将InnoDB表保存在一个表空间内,该表空间可由数个文件创建。这样,表的大小就能超过单独文件的最大容量。表空间可包括原始磁盘分区,从而使得很大的表成为可能。表空间的最大容量为64TB。

二、安装MySQL

下载MySQL地址:http://dev.mysql.com/downloads/mysql/

2.1.CentOS 安装:

yum install mysql-server

2.2.Ubuntu 安装:

sudo apt-get install mysql-server

sudo apt-get isntall mysql-client

sudo apt-get install libmysqlclient-dev

# 检测是否安装成功(是否为LISTEN状态)

sudo netstat -tap | grep mysql

2.3.编译安装MySQL-5.5.32:

# 安装依赖包
yum install ncurses-devel gcc gcc-c++ -y # 创建目录
mkdir -p /home/oldsuo/tools
# 安装cmake软件,gmake编译安装
cd /home/oldsuo/tools/
tar xf cmake-2.8.8.tar.gz
cd cmake-2.8.8
./configure
#CMake has bootstrapped. Now run gmake.
gmake
gmake install
cd ../
# 开始安装mysql
# 创建用户和组
groupadd mysql
useradd mysql -s /sbin/nologin -M -g mysql # 解压编译MySQL
tar zxf mysql-5.5.32.tar.gz
cd mysql-5.5.32
cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.5.32 \
-DMYSQL_DATADIR=/application/mysql-5.5.32/data \
-DMYSQL_UNIX_ADDR=/application/mysql-5.5.32/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii \
-DENABLED_LOCAL_INFILE=ON \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITHOUT_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FAST_MUTEXES=1 \
-DWITH_ZLIB=bundled \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_READLINE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DWITH_DEBUG=0 #-- Build files have been written to: /home/oldsuo/tools/mysql-5.5.32
提示: 编译时可配置的选项很多,具体可参考结尾附录或官方文档:
make
#[100%] Built target my_safe_process
make install
ln -s /application/mysql-5.5.32/ /application/mysql
如果上述操作未出现错误,则MySQL5.5.32软件cmake方式的安装就算成功了。
#拷贝配置文件
cp mysql-5.5.32/support-files/my-small.cnf /etc/my.cnf
#添加变量,并使之生效
echo 'export PATH=/application/mysql/bin:$PATH' >>/etc/profile
source /etc/profile
echo $PATH
#授权用户及/tmp/临时文件目录
chown -R mysql.mysql /application/mysql/data/
chmod -R 1777 /tmp/ #初始化数据库
cd /application/mysql/scripts/
./mysql_install_db --basedir=/application/mysql/ --datadir=/application/mysql/data/ --user=mysql
cd ../ #启动数据库
cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
/etc/init.d/mysqld start #检查端口
netstat -lntup|grep 3306

2.4编译安装完后一般安全操作:

2.4.1.删除不必要的用户和库:

#查看用户和主机列,从mysql.user里查看
select user,host from mysql.user;
#删除用户名为空的库,并检查
delete from mysql.user where user='';
select user,host from mysql.user; #删除主机名为localhost.localdomain的库,并检查
delete from mysql.user where host='localhost.localdomain';
select user,host from mysql.user; #删除主机名为::1的库,并检查。::1库的作用为IPV6
delete from mysql.user where host='::1'; #删除test库
drop database test;

2.4.2.添加额外管理员:

# 添加额外管理员,system作为管理员,oldsuo为密码
mysql> delete from mysql.user;
Query OK, 2 rows affected (0.00 sec)
mysql> grant all privileges on *.* to system@'localhost' identified by 'oldsuo' with grant option;
Query OK, 0 rows affected (0.00 sec)
# 刷新MySQL的系统权限相关表,使配置生效
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> select user,host from mysql.user;
+--------+-----------+
| user | host |
+--------+-----------+
| system | localhost |
+--------+-----------+
1 row in set (0.00 sec)
mysql>

2.4.3.设置登录密码并开机自启:

#设置密码,并登陆
/usr/local/mysql/bin/mysqladmin -u root password 'oldsuo'
mysql -usystem -p #开机启动mysqld,并检查
chkconfig mysqld on
chkconfig --list mysqld

三、字符集

3.1.字符集简介:

字符集,character set,就是一套表示字符的符号和这些的符号的底层编码;而校验规则,则是在字符集内用于比较字符的一套规则。简单的说,字符集就是一套文字符号及其编码、比较规则的集合,第一个计算机字符集ASC2,MySQL数据库字符集包括字符集和校对规则两个概念,字符集是定义数据库里面的内容字符串的存储方式,而校对规则是定义比较字符串的方式。

建议:中英文环境选择utf8

3.2查看设置字符集

# 查看MySQL字符集设置情况
show variables like 'character_set%';
# 查看库的字符集
show create database db;
# 查看表的字符集
show create table db_tb\G
# 查询所有
show collation;
# 设置表的字符集
set tables utf8;

3.3、MySQL数据乱码及解决方法

3.3.1系统方面

cat /etc/sysconfig/i18n
LANG="zh_CN.UTF-8"

3.3.2客户端(程序),调整字符集为latin1

mysql> set names latin1;        #临时生效
Query OK, 0 rows affected (0.00 sec)
更改my.cnf客户端模块的参数,实现set name latin1 的效果,并且永久生效。
[client]
default-character-set=latin1

#无需重启服务,退出登录就生效,相当于set name latin1。

3.3.3服务端,更改my.cnf参数

[mysqld]
default-character-set=latin1 #适合5.1及以前版本
character-set-server=latin1 #适合5.5

3.3.4.库、表、程序

#建表指定utf8字符集
mysql> create database nick_defailtsss DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

3.3.5.utf8字符集修改成GBK字符集的实际过程

导出表结构
#以utf8格式导出
mysqldump -uroot -p --default-character-set=utf8 -d nick_defailt>alltable.sql
--default-character-set=gbk #表示已GBK字符集连接 –d 只表示表结构
编辑alltable.sql 将utf8改成gbk。
确保数据库不在更新,导出所有数据
mysqldump -uroot -p --quick --no-create-info --extended-insert --default-character-set=utf8 nick_defailt>alldata.sql
打开alldata.sql将set name utf8 修改成 set names gbk(或者修改系统的服务端和客户端)
建库
create database oldsuo default charset gbk; 创建表,执行alltable.sql
mysql -uroot -p oldsuo <alltable.sql
导入数据
mysql -uroot -p oldsuo <alltable.sql

四、存储引擎

MySQL最常用存储引擎Myisam和Innodb。mysql 5.5.5以后默认存储引擎为Innodb。

MySQL的每种引擎在MySQL里是通过插件的方式使用的,MySQL可以支持多种存储引擎。

建议:使用 Innodb引擎,因为支持回滚

4.1引擎对应系统文件

4.1.1.MyISAM引擎系统库表对应文件

[root@mysql 3306]# ll /data/3306/data/mysql/
-rw-rw----. 1 mysql mysql 10630 10月 31 16:05 user.frm #保存表的定义
-rw-rw----. 1 mysql mysql 1140 10月 31 18:40 user.MYD #数据文件
-rw-rw----. 1 mysql mysql 2048 10月 31 18:40 user.MYI #索引文件 [root@mysql 3306]# file data/mysql/user.frm
data/mysql/user.frm: MySQL table definition file Version 9
[root@mysql 3306]# file data/mysql/user.MYD
data/mysql/user.MYD: DBase 3 data file (167514107 records)
[root@mysql 3306]# file data/mysql/user.MYI
data/mysql/user.MYI: MySQL MISAM compressed data file Version 1

4.1.2. InnoDB引擎

[root@mysql 3306]# ll data/
-rw-rw----. 1 mysql mysql 134217728 10月 31 20:05 ibdata1

4.2、修改引擎

创建后引擎的修改
语法: ALTER TABLE student ENGINE = INNODB;
ALTER TABLE student ENGINE = MyISAM;
mysql> use teacher;
Database changed
mysql> show create table student;
+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| student | CREATE TABLE `student` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`name` char(20) NOT NULL,
`age` tinyint(2) NOT NULL DEFAULT '',
`dept` varchar(16) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `index_name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 |
+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec) mysql> ALTER TABLE student ENGINE = MyISAM;
Query OK, 3 rows affected (0.05 sec)
Records: 3 Duplicates: 0 Warnings: 0 mysql> show create table student;
+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| student | CREATE TABLE `student` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`name` char(20) NOT NULL,
`age` tinyint(2) NOT NULL DEFAULT '',
`dept` varchar(16) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `index_name` (`name`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 |
+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec) 4.3、建表指定引擎 mysql> create table mess (
-> id int(4) not null,
-> name char(20) not null,
-> age tinyint(2) NOT NULL default '',
-> dept varchar(16) default NULL
-> ) ENGINE=MyISAM CHARSET=utf8;
Query OK, 0 rows affected (0.00 sec)

五、基本语句命令

 运行相关:

5.1.0单实例mysql启动

[root@localhost ~]# /etc/init.d/mysqld start
Starting MySQL [确定]
#mysqld_safe –user=mysql &

5.1.1.查看MySQL端口

[root@localhost ~]# ss -lntup|grep 3306
tcp LISTEN 0 50 *:3306 *:* users:(("mysqld",19651,10))

5.1.3.查看MySQL进程

[root@localhost ~]# ps -ef|grep mysql|grep -v grep
root 19543 1 0 Oct10 ? 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/localhost.localdomain.pid
mysql 19651 19543 0 Oct10 ? 00:05:04 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql --log-error=/usr/local/mysql/data/localhost.localdomain.err --pid-file=/usr/local/mysql/data/localhost.localdomain.pid --socket=/tmp/mysql.sock --port=3306

5.1.4.MySQL启动原理

/etc/init.d/mysqld 是一个shell启动脚本,启动后最终会调用mysqld_safe脚本,最后调用mysqld服务启动mysql。
"$manager" \
--mysqld-safe-compatible \
--user="$user" \
--pid-file="$pid_file" >/dev/null 2>&1 &

5.1.5.关闭数据库

[root@localhost ~]# /etc/init.d/mysqld stop
Shutting down MySQL.... [确定]

5.1.6.查看mysql数据库里操作命令历史

cat /root/.mysql_history

5.1.7.强制linux不记录敏感历史命令

HISTCONTROL=ignorespace

5.1.8.mysql设置密码

/usr/local/mysql/bin/mysqladmin -u root password 'oldsuo'

5.1.9.mysql修改密码,与多实例指定sock修改密码

mysqladmin -uroot -passwd password 'oldsuo'
mysqladmin -uroot -passwd password 'oldsuo' -S /data/3306/mysql.sock

操作相关:

登陆mysql数据库
mysql -uroot –p
查看有哪些库
show databases;
删除test库
drop database test;
使用test库
use test;
查看有哪些表
show tables;
查看suoning表的所有内容
select * from suoning;
查看当前版本
select version();
查看当前用户
select user();
查看用户和主机列,从mysql.user里查看
select user,host from mysql.user;
删除前为空,后为localhost的库
drop user ""@localhost;
刷新权限
flush privileges;
跳出数据库执行命令
system ls;

六、破解mysql登录密码

6.1普通方式

#> service mysqld stop
#>mysqld_safe --skip-grant-tables &
输入 mysql -uroot -p 回车进入
>use mysql;
> update user set password=PASSWORD("newpass")where user="root";
更改密码为 newpassord
> flush privileges; 更新权限
> quit 退出
service mysqld restart
mysql -uroot -p新密码进入

6.2普通方式的简写

service mysqld stop
mysqld_safe --skip-grant-tables --user=mysql &
mysql
update mysql.user set password=PASSWORD("newpass")where user="root" and host='localhost';
flush privileges;
mysqladmin -uroot -pnewpass shutdown
/etc/init.d/mysqld start
mysql -uroot -pnewpass #登陆

6.3多实例方式

killall mysqld
mysqld_safe –defaults-file=/data/3306/my.cnf –skip-grant-table &
mysql –u root –p –S /data/3306/mysql.sock #指定sock登陆
update mysql.user set password=PASSWORD("newpass")where user="root";
flush privileges;
mysqladmin -uroot -pnewpass shutdown
/etc/init.d/mysqld start
mysql -uroot -pnewpass #登陆

MySQL系列(一)的更多相关文章

  1. MySQL 系列(四)主从复制、备份恢复方案生产环境实战

    第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...

  2. MySQL 系列(三)你不知道的 视图、触发器、存储过程、函数、事务、索引、语句

    第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...

  3. MySQL 系列(二) 你不知道的数据库操作

    第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 本章内容: 查看\创建\使用\删除 数据库 用户管理及授权实战 局域网 ...

  4. MySQL 系列(五) 多实例、高可用生产环境实战

    MySQL 系列(五) 多实例.高可用生产环境实战   第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 史上最屌.你不知道的数据库操作 第三 ...

  5. 屌炸天实战 MySQL 系列教程(二) 史上最屌、你不知道的数据库操作

    此篇写MySQL中最基础,也是最重要的操作! 第一篇:屌炸天实战 MySQL 系列教程(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:屌炸天实战 MySQL 系列教程(二) 史上最屌.你不 ...

  6. MySQL系列(一)--基础知识大总结

    MySQL系列(一)---基础知识大总结 前言:本文主要为mysql基础知识的大总结,mysql的基础知识很多,这里只是作为简单的介绍,但是具体的细节还是需要自行搜索.当然本文还有很多遗漏的地方,后续 ...

  7. MySQL系列(二)---MySQL事务

    MySql 事务 目录 MySQL系列(一):基础知识大总结 MySQL系列(二):MySQL事务 什么是事务(transaction) 保证成批操作要么完全执行,要么完全不执行,维护数据的完整性.也 ...

  8. MySQL系列(三)---索引

    MySQL系列(三)---索引 前言:如果有疏忽或理解不当的地方,请指正. 目录 MySQL系列(一):基础知识大总结 MySQL系列(二):MySQL事务 MySQL系列(三):索引 什么是索引 如 ...

  9. MySQL系列(四)---引擎

    MySql中的引擎 目录 MySQL系列(一):基础知识大总结 MySQL系列(二):MySQL事务 MySQL系列(三):索引 引擎种类 FEDERATED MRG_MYISAM MyISAM BL ...

  10. MySQL系列(五)---总结MySQL中的锁

    MySQL中的锁 目录 MySQL系列(一):基础知识大总结 MySQL系列(二):MySQL事务 MySQL系列(三):索引 MySQL系列(四):引擎 概述 MyISAM支持表锁,InnoDB支持 ...

随机推荐

  1. 阿里 IOS 面试官教你在面试中脱颖而出

    前言: 知己知彼.百战不殆,面试也是如此. 只有充分了解面试官的思路,才能更好地在面试中充分展现自己. 今天,阿里高级技术专家将分享自己作为面试官的心得与体会.如果你是面试者,可以借此为镜,对照发现自 ...

  2. 并发——抽象队列同步器AQS的实现原理

    一.前言   这段时间在研究Java并发相关的内容,一段时间下来算是小有收获了.ReentrantLock是Java并发中的重要部分,所以也是我的首要研究对象,在学习它的过程中,我发现它是基于抽象队列 ...

  3. 《Java基础复习》—规范与基础

    参考书目<Java 编程思想>所以大家放心食用 一.注释规范以及API文档 1.注释 1.1三种注释方法 //注释内容 单行注释 /* 注释内容 */ 多行注释 /**注释内容*/ 文档注 ...

  4. php数据库应用程序建议

    一.保持独立的读写连接 开始就创建两个数据库连接是一个好的方法,一个用于读取,一个用于写入,并且允许不同的数据库服务器连接他们.如果只有一个服务器,则将它们设置彼此相同. 当操作为INSERT, UP ...

  5. Pytest系列(17)- pytest-xdist分布式测试的原理和流程

    pytest-xdist分布式测试的原理 前言 xdist的分布式类似于一主多从的结构,master机负责下发命令,控制slave机:slave机根据master机的命令执行特定测试任务 在xdist ...

  6. BaseRuntimeException自定义业务异常类实现

    public class BaseRuntimeException extends RuntimeException { private final int code; public BaseRunt ...

  7. elementUI踩坑

    1.滚动条消失,body中莫名出现行内样式overflow: hidden; 在做某个图片上传,显示功能出现的问题.控制台并没有报错,代码也并无相关操作 必须重新刷新页面之后滚动条才会显示出来 几天后 ...

  8. redis集群搭建-3.0/4.0版本

    1.  Redis的安装 1.1. Redis的安装 Redis是c语言开发的. 安装redis需要c语言的编译环境.如果没有gcc需要在线安装.yum install gcc-c++ 安装步骤: 第 ...

  9. 002-IDE的使用与数据类型-C语言笔记

    002-IDE的使用与数据类型-C语言笔记 学习目标 1.[了解]IDE并熟悉Xcode基本使用技巧 2.[理解]C程序的入口和运行流程 3.[理解]变量的声明赋值和一些细节 4.[理解]变量的命名规 ...

  10. 练习,自定义TextView(1.1)

    重新自定义TextView是非常有趣的事情,跟着Android4高级编程,通过自定义TextView,来敲一下代码: 这个是那么的简单,自定义TextView,新建CustomTextView继承Te ...