MYSQL

Posted 脑子是个好东西,出门得带上 __rongge

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MYSQL相关的知识,希望对你有一定的参考价值。

mysql介绍

是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一!是基于socket编写的一款C/S架构的软件

1、常见的数据库:

关系型数据库(需要有表结构)

  • MySQL 是一款免费、开源、支持大中型企业的数据库,运用广泛,后来被Sun公司收购,最后由Oracle公司将Sun公司合并,mysql的创始人又开发了一款MariaDB,完全兼容mysql,使用起来跟mysql一模一样!!
  • Oracle 是一款闭源且收费的分布式数据库,其功能极其强大!
  • SQLsever 是微软旗下的,仅支持Windows系统,局限性强
  • DB2 是IBM开发的数据库软件,闭源、收费,与IBM的机器绑定销售

非关系型(key-value形式储存,没有表结构)

  • MongoDB
  • Redis
  • HBASE
  • memcache 

2、MySQL安装

技术分享图片
1.解压tar包
cd /software
tar -xzvf mysql-5.6.21-linux-glibc2.5-x86_64.tar.gz
mv mysql-5.6.21-linux-glibc2.5-x86_64 mysql-5.6.21

2.添加用户与组
groupadd mysql
useradd -r -g mysql mysql
chown -R mysql:mysql mysql-5.6.21

3.安装数据库
su mysql
cd mysql-5.6.21/scripts
./mysql_install_db --user=mysql --basedir=/software/mysql-5.6.21 --datadir=/software/mysql-5.6.21/data

4.配置文件
cd /software/mysql-5.6.21/support-files
cp my-default.cnf /etc/my.cnf
cp mysql.server /etc/init.d/mysql
vim /etc/init.d/mysql   #若mysql的安装目录是/usr/local/mysql,则可省略此步
修改文件中的两个变更值
basedir=/software/mysql-5.6.21
datadir=/software/mysql-5.6.21/data

5.配置环境变量
vim /etc/profile
export MYSQL_HOME="/software/mysql-5.6.21"
export PATH="$PATH:$MYSQL_HOME/bin"
source /etc/profile

6.添加自启动服务
chkconfig --add mysql
chkconfig mysql on

7.启动mysql
service mysql start

8.登录mysql及改密码与配置远程访问
mysqladmin -u root password your_password     #修改root用户密码
mysql -u root -p     #登录mysql,需要输入密码
mysql>GRANT ALL PRIVILEGES ON *.* TO root@% IDENTIFIED BY your_password WITH GRANT OPTION;     #允许root用户远程访问
mysql>FLUSH PRIVILEGES;     #刷新权限
Linux系统中安装MySQL

 

技术分享图片
1. 解压
tar zxvf  mariadb-5.5.31-linux-x86_64.tar.gz   
mv mariadb-5.5.31-linux-x86_64 /usr/local/mysql //必需这样,很多脚本或可执行程序都会直接访问这个目录

2. 权限
groupadd mysql             //增加 mysql 属组 
useradd -g mysql mysql     //增加 mysql 用户 并归于mysql 属组 
chown mysql:mysql -Rf  /usr/local/mysql    // 设置 mysql 目录的用户及用户组归属。 
chmod +x -Rf /usr/local/mysql    //赐予可执行权限 

3. 拷贝配置文件
cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf     //复制默认mysql配置 文件到/etc目录 

4. 初始化
/usr/local/mysql/scripts/mysql_install_db --user=mysql          //初始化数据库 
cp  /usr/local/mysql/support-files/mysql.server    /etc/init.d/mysql    //复制mysql服务程序 到系统目录 
chkconfig  mysql on     //添加mysql 至系统服务并设置为开机启动 
service  mysql  start  //启动mysql

5. 环境变量配置
vim /etc/profile   //编辑profile,将mysql的可执行路径加入系统PATH
export PATH=/usr/local/mysql/bin:$PATH 
source /etc/profile  //使PATH生效。

6. 账号密码
mysqladmin -u root password yourpassword //设定root账号及密码
mysql -u root -p  //使用root用户登录mysql
use mysql  //切换至mysql数据库。
select user,host,password from user; //查看系统权限
drop user ‘‘@localhost; //删除不安全的账户
drop user [email protected]::1;
drop user [email protected]127.0.0.1;
select user,host,password from user; //再次查看系统权限,确保不安全的账户均被删除。
flush privileges;  //刷新权限

7. 一些必要的初始配置
1)修改字符集为UTF8
vi /etc/my.cnf
在[client]下面添加 default-character-set = utf8
在[mysqld]下面添加 character_set_server = utf8
2)增加错误日志
vi /etc/my.cnf
在[mysqld]下面添加:
log-error = /usr/local/mysql/log/error.log
general-log-file = /usr/local/mysql/log/mysql.log
3) 设置为不区分大小写,linux下默认会区分大小写。
vi /etc/my.cnf
在[mysqld]下面添加:
lower_case_table_name=1

修改完重启:#service  mysql  restart
Linux系统中安装MariaDB

3、windows版本安装及初始化等操作

# 1、下载MySQL:
http://dev.mysql.com/downloads/mysql/

# 2、解压
# 将下载的压缩包解压到想要安装的目标盘下的文件夹

# 3、添加环境变量

# 4、初始化
mysql --initialize-insecure

# 5、启动mysql服务
mysqld 或 (net start mysql)

# 6、启动mysql客户端连接至mysql服务
mysql -uroot -p

# 7、关闭mysql服务
net stop mysql 或 taskkill /f /pid PID号 或 tskill mysqld

# 8、重启mysql客户端
mysql -uroot -p     # 初始密码为空,直接回车进入

# 9、修改密码
mysql> mysqladmin -uroot password "自己的密码"   # 原密码为空时可以不用-p
mysql> mysqladmin -uroot -p"旧密码" password "新密码"

4、忘记密码解决办法

Windows平台中的密码破解方式(mysql5.7版本)

技术分享图片
#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 pid号

#6 重新启动mysql
方式一

 

技术分享图片
#1. 关闭mysql,可以用tskill mysqld将其杀死

#2. 在解压目录下,新建mysql配置文件my.ini
#3. 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,然后就可以以新密码登录了
方式二

Linux平台中的密码破解方式

技术分享图片方式一:删除授权库,重新初始化

 

技术分享图片
[[email protected] ~]# vim /etc/my.cnf    #mysql主配置文件
[mysqld]
skip-grant-table
[[email protected] ~]# systemctl restart mariadb
[[email protected] ~]# mysql
MariaDB [(none)]> update mysql.user set password=password("123") where user="root" and host="localhost";
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> q
[[email protected] ~]# #打开/etc/my.cnf去掉skip-grant-table,然后重启
[[email protected] ~]# systemctl restart mariadb
[[email protected] ~]# mysql -u root -p123 #以新密码登录
方式二:启动时,跳过授权库

5、统一字符编码

技术分享图片
#1. 修改配置文件my.ini
[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. 重启mysql服务

#3. 查看修改结果:
mysql>s
mysql>show variables like %char%
View Code

6、为mysql服务指定配置文件

技术分享图片
#在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=D:mysql-5.7.23-winx64
#data目录
datadir=D: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=jack
password=1234


#!!!如果没有[mysql],则用户在执行mysql命令时的配置以[client]为准
my.ini

sql语句

# 1. 操作文件夹
增:
    create database db1 charset utf8;
查:
    show databases;
    show create database db1;
改:
    alter database db1 charset utf8;
删:
    drop database db1;


# 2. 操作文件
先切换到文件夹下:use db1
增:
    create table t1(id int,name char,...);
查:
    show tables;
    show create table db1;
    desc db1;
改:
    alter table t1 modify name char(1);
    alter table t1 change old_name new_name char(2);
    alter table t1 add name int;
    改字符编码:
        alter table t1 default character set gbk
    改文件名:
        rename table t1 to t2
删:
    drop table t1;


# 3. 操作文件中的内容/记录
增:
    insert into t1 values(1,‘egon1‘),(2,‘egon2‘),(3,‘egon3‘);
查:
    select * from t1;
    select id name from t1;
改:
    update t1 set name = ‘sb‘ where id = 2;
删:
    delete from t1 where id = 1;


清空表:
delete from t1;  # 如果有自增id,新增的数据,仍然是以删除前的最后一样作为起始。
truncate table t1; 数据量大,删除速度比上一条快,重建表,清空所有数据

auto_increment 表示:自增
primary key 表示:约束(不能重复且不能为空);加速查找

 

以上是关于MYSQL的主要内容,如果未能解决你的问题,请参考以下文章

从mysql的片段中加载ListView

连接MySQL出现错误:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)(代码片段

使用 json rereiver php mysql 在片段中填充列表视图

关于mysql驱动版本报错解决,Cause: com.mysql.jdbc.exceptions.jdbc4Unknown system variable ‘query_cache_size(代码片段

修改MySQL密码报错“ERROR 1819 (HY000): Your password does not satisfy the current policy requirements“(代码片段

mysql查看版本的四种方法