MYSQL介绍安装及一些问题解决
一、简介
MySQL是最流行的开放源码SQL数据库管理系统,它是由MySQL AB公司开发、发布并支持的。有以下特点:
- MySQL是一种数据库管理系统。
- MySQL是一种关联数据库管理系统。
- MySQL软件是一种开放源码软件。
- MySQL数据库服务器具有快速、可靠和易于使用的特点。
- MySQL服务器工作在客户端/服务器模式下,或嵌入式系统中。
- 有大量可用的共享MySQL软件。
MySQL表最大能达到多少?
InnoDB存储引擎将InnoDB表保存在一个表空间内,该表空间可由数个文件创建。这样,表的大小就能超过单独文件的最大容量。表空间可包括原始磁盘分区,从而使得很大的表成为可能。表空间的最大容量为64TB。
二、安装MySQL
下载MySQL地址:http://dev.mysql.com/downloads/mysql/
CentOS 安装:
- yum install mysql-server
Ubuntu 安装:
- 1. sudo apt-get install mysql-server
- 2. sudo apt-get isntall mysql-client
- 3. sudo apt-get install libmysqlclient-dev
- # 检测是否安装成功(是否为LISTEN状态)
- sudo netstat -tap | grep mysql
编译安装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

编译安装完后一般安全操作:
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、添加额外管理员:

- # 添加额外管理员,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>

3、设置登录密码并开机自启:

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

三、字符集
对于新手来说,字符集乱码问题无疑是头痛的问题,小编就带你不在头痛,从此幸福。
1、字符集简介:
字符集,character set,就是一套表示字符的符号和这些的符号的底层编码;而校验规则,则是在字符集内用于比较字符的一套规则。简单的说,字符集就是一套文字符号及其编码、比较规则的集合,第一个计算机字符集ASC2,MySQL数据库字符集包括字符集和校对规则两个概念,字符集是定义数据库里面的内容字符串的存储方式,而校对规则是定义比较字符串的方式。
建议:中英文环境选择utf8
2、查看设置字符集

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

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

- 1> 系统方面
- cat /etc/sysconfig/i18n
- LANG="zh_CN.UTF-8"
- 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> 服务端,更改my.cnf参数
- [mysqld]
- default-character-set=latin1 #适合5.1及以前版本
- character-set-server=latin1 #适合5.5
- 4> 库、表、程序
- #建表指定utf8字符集
- mysql> create database nick_defailtsss DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
- Query OK, 1 row affected (0.00 sec)

4、将utf8字符集修改成GBK字符集的实际过程

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

四、存储引擎
MySQL最常用存储引擎Myisam和Innodb。mysql 5.5.5以后默认存储引擎为Innodb。
MySQL的每种引擎在MySQL里是通过插件的方式使用的,MySQL可以支持多种存储引擎。
建议:使用 Innodb引擎,因为支持回滚,后续博客会讲。
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
- 2) InnoDB引擎
- [root@mysql 3306]# ll data/
- -rw-rw----. 1 mysql mysql 134217728 10月 31 20:05 ibdata1

2、修改引擎
- 创建后引擎的修改
- 语法: ALTER TABLE student ENGINE = INNODB;
- ALTER TABLE student ENGINE = MyISAM;
3、建表指定引擎

- mysql> create table mess (
- -> id int(4) not null,
- -> name char(20) not null,
- -> age tinyint(2) NOT NULL default '0',
- -> dept varchar(16) default NULL
- -> ) ENGINE=MyISAM CHARSET=utf8;
- Query OK, 0 rows affected (0.00 sec)

五、基本语句命令
运行相关:

- 1、 单实例mysql启动
- [root@localhost ~]# /etc/init.d/mysqld start
- Starting MySQL [确定]
- #mysqld_safe –user=mysql &
- 2、 查看MySQL端口
- [root@localhost ~]# ss -lntup|grep 3306
- tcp LISTEN 0 50 *:3306 *:* users:(("mysqld",19651,10))
- 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
- 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、关闭数据库
- [root@localhost ~]# /etc/init.d/mysqld stop
- Shutting down MySQL.... [确定]
- 6、 查看mysql数据库里操作命令历史
- cat /root/.mysql_history
- 7、 强制linux不记录敏感历史命令
- HISTCONTROL=ignorespace
- 8、 mysql设置密码
- /usr/local/mysql/bin/mysqladmin -u root password 'oldsuo'
- 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登录密码
忘记mysql登录密码也是一件头疼的事,那么小编会让你继续幸福。

- 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新密码进入
- 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 #登陆
- 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介绍安装及一些问题解决的更多相关文章
- 数据库 - 初识MySQL - 介绍/安装
一.介绍: mysql数据库管理软件: 套接字:服务端,客户端:客户端可访问服务端得数据 1.支持并发:操作得是共享得数据 2.处理锁,数据安全,性能 3.用别人得软件,得照着别人得规范,组织自己得语 ...
- 【MySQL】安装及配置
" 目录 #. 概述 1. 什么是数据(Data) 2. 什么是数据库(DataBase, 简称DB) 3. 什么是数据库管理系统(DataBase Management System) 4 ...
- mysql介绍及安装
一.MySQL介绍 1.标志 MySQL的海豚标志的名字叫"sakila",它是由MySQL AB的创始人从用户在"海豚命名"的竞赛中建议的大量的名字表中选出的 ...
- (大数据工程师学习路径)第四步 SQL基础课程----SQL介绍及mysql的安装
一.数据库和SQL介绍 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它的产生距今已有六十多年.随着信息技术和市场的发展,数据库变得无处不在:它在电子商务.银行系统等众多领域都 ...
- MySQL系列-第一章节:MySQL介绍与安装
1.数据库介绍 1.1.什么是数据库`<Database>` 简单说存放数据的仓库,这个仓库按照一定的数据结构<数据结构是指数据的组织形式或数据之间的联系>来组织.存储的,我们 ...
- SQL的介绍及MySQL的安装
基础篇 - SQL 介绍及 MySQL 安装 SQL的介绍及MySQL的安装 课程介绍 本课程为实验楼提供的 MySQL 实验教程,所有的步骤都在实验楼在线实验环境中完成, ...
- {MySQL数据库初识}一 数据库概述 二 MySQL介绍 三 MySQL的下载安装、简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 初识sql语句
MySQL数据库初识 MySQL数据库 本节目录 一 数据库概述 二 MySQL介绍 三 MySQL的下载安装.简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 ...
- MySQL介绍及安装(一)
一.关系型数据库和非关系型数据库 1.1:关系型数据库 关系型数据库是把复杂的数据结构归结为简单的二元关系(即二维表格的形式),在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上的,通过 ...
- MySQL介绍与安装
mysql介绍 #mysql就是一个基于socket编写的C/S架构的软件 #客户端软件 mysql自带:如mysql命令,mysqldump命令等 python模块:如pymysql 数据库管理软件 ...
随机推荐
- Masonry_设置比例
[self.bgView addSubview:self.progressImageView]; [self.progressImageView mas_makeConstraints:^(MASCo ...
- 解析C#类中的构造函数
<解析C#类中的构造函数> 一. C#中的构造函数概述: C#中类包含数据成员和函数成员.函数成员提供了操作类中数据的某些功能,包括方法.属性.构造器和终结器.运算符和索引器. 构造函数 ...
- 【JVM】JVM系列之JVM体系(一)
一.前言 为什么要学习了解Java虚拟机 1.我们需要更加清楚的了解Java底层是如何运作的,有利于我们更深刻的学习好Java. 2.对我们调试错误提供很宝贵的经验. 3.这是合格的Java程序必须要 ...
- jQuery-1.9.1源码分析系列(十五) 动画处理
首先需要有队列(queue)的基本知识.见上一章. a.动画入口jQuery.fn.animate函数执行流程详解 先根据参数调用jQuery.speed获取动画相关参数,得到一个类似如下的对象:并且 ...
- 关系数据库SQL之可编程性函数(用户自定义函数)
前言 在关系型数据库中除了前面几篇基本的数据库和数据表操作之外,还提供了可编程性的函数.存储过程.事务.触发器及游标. 本文介绍的是函数. 函数分为两种: 系统函数 用户自定义函数 准备工作 这里以银 ...
- Visual Studio 2013 Update 3 RTM 正式发布
VS2013.3 RTM已发布! 完整安装包:http://download.microsoft.com/download/6/F/0/6F0777D3-3541-465F-8639-A8F9D36B ...
- 【Win10开发】关于AutoSuggestBox
其实看名字我们就知道,这个控件可以提供一些建议文本.我们在做搜索框时可以做一些文本来让用户选择. 这个控件有两个关键的事件QuerySubmitted和SuggestionChosen事件,当下拉列表 ...
- JS进阶之原型
之前有在自己的文章中谈到对象,而说到对象我们就不可避免的要扯到原型,并且原型也是我们必须得理解到位的一个点,那接下来我们就来聊一聊js的原型吧. JS中一切皆为对象,那么原型也是一种对象.所以它有对象 ...
- Guava学习-目录
备份一下地址: 目录 1. 基本工具 [Basic utilities] 让使用Java语言变得更舒适 1.1 使用和避免null:null是模棱两可的,会引起令人困惑的错误,有些时候它让人很不舒服. ...
- C++_系列自学课程_第_9_课_C语言风格字符串_《C++ Primer 第四版》
前面说了写关于数组和指针的内容,这次在这里讨论一下字符串,讨论一下C语言风格的字符串. 在C语言里面我们利用字符数组来对字符串进行处理, 在C++里面我们前面说过一种类类型string可以对字符串进行 ...