MySQL
基础概念
mysql是什么
mysql就是一个基于socket编写的C/S架构的软件。
客户端软件
mysql自带:如mysql命令,mysqldump命令等
python模块:如pymysql
数据库管理软件分类
分两大类:
关系型:如sqllite,db2,oracle,access,sql server,MySQL,注意:sql语句通用
非关系型:mongodb,redis,memcache
可以简单的理解为:
关系型数据库需要有表结构
非关系型数据库是key-value存储的,没有表结构
安装
linux版本
二进制rpm包安装
yum -y install mysql-server mysql
Window版本
1、下载:MySQL Community Server 5.7.16
http://dev.mysql.com/downloads/mysql/
2、解压
如果想要让MySQL安装在指定目录,那么就将解压后的文件夹移动到指定目录,如:C:mysql-5.7.16-winx64
3、添加环境变量
【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【将MySQL的bin目录路径追加到变值值中,用 ; 分割】
4、初始化
mysqld --initialize-insecure
5、启动MySQL服务
mysqld # 启动MySQL服务
6、启动MySQL客户端并连接MySQL服务
mysql -u root -p # 连接MySQL服务器
将MySQL服务制作成windows服务
注意:--install前,必须用mysql启动命令的绝对路径
制作MySQL的Windows服务,在终端执行此命令:"c:mysql-5.7.16-winx64inmysqld" --install
移除MySQL的Windows服务,在终端执行此命令:"c:mysql-5.7.16-winx64inmysqld" --remove
注册成服务之后,以后再启动和关闭MySQL服务时,仅需执行如下命令:
【启动MySQL服务】net start mysql
【关闭MySQL服务】net stop mysql
破解密码
linux平台下,破解密码的两种方式:
方法一:删除授权库mysql,重新初始化
[root@egon ~]# rm -rf /var/lib/mysql/mysql #所有授权信息全部丢失!!!
[root@egon ~]# systemctl restart mariadb
[root@egon ~]# mysql
方法二:启动时,跳过授权库
[root@egon ~]# vim /etc/my.cnf #mysql主配置文件
[mysqld]
skip-grant-table
[root@egon ~]# systemctl restart mariadb
[root@egon ~]# mysql
MariaDB [(none)]update mysql.user set password=password("123") where user="root" and host="localhost";
MariaDB [(none)]flush privileges;
MariaDB [(none)]q
[root@egon ~]# #打开/etc/my.cnf去掉skip-grant-table,然后重启
[root@egon ~]# systemctl restart mariadb
[root@egon ~]# mysql -u root -p123 #以新密码登录
windows平台下,5.7版本mysql,破解密码的两种方式:
方式一
1 关闭mysql
2 在cmd中执行:mysqld --skip-grant-tables
3 在cmd中执行:mysql
4 执行如下sql:
update mysql.user set authentication_string=password('') where user = 'root';
flush privileges;
5 tskill mysqld #或taskkill -f /PID 7832
6 重新启动mysql
方式二
关闭mysql,可以用tskill mysqld将其杀死
在解压目录下,新建mysql配置文件my.ini
my.ini内容,指定
[mysqld]
skip-grant-tables
4.启动mysqld
5.在cmd里直接输入mysql登录,然后操作
update mysql.user set authentication_string=password('') where user='root and host='localhost';
flush privileges;
6.注释my.ini中的skip-grant-tables,然后启动myqsld,然后就可以以新密码登录了
统一字符编码
强调:配置文件中的注释可以有中文,但是配置项中不能出现中文
在mysql的解压目录下,新建my.ini,然后配置
1,在执行mysqld命令时,以上列配置会生效,即mysql服务启动时生效
[mysqld]
;skip-grant-tables
port=3306
character_set_server=utf8
default-storage-engine=innodb
innodb_file_per_table=1
解压的目录
basedir=E:mysql-5.7.19-winx64
data目录
datadir=E:my_data #在mysqld --initialize时,就会将初始数据存入此处指定的目录,在初始化之后,启动mysql时,就会去这个目录里找数据
2, 针对客户端命令的全局配置,当mysql客户端命令执行时,下列配置生效
[client]
port=3306
default-character-set=utf8
user=root
password=123
3,只针对mysql这个客户端的配置,2中的是全局配置,而此处的则是只针对mysql这个命令的局部配置
[mysql]
;port=3306
;default-character-set=utf8
user=egon
password=4573
!!!如果没有[mysql],则用户在执行mysql命令时的配置以[client]为准
统一字符编码【配置】
#1. 修改配置文件
[mysqld]
default-character-set=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
#mysql5.5以上:修改方式有所改动
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
#2. 重启服务
#3. 查看修改结果:
s
show variables like '%char%'