背景

作为一个前端,偶尔搞下后端

要熟悉 SQL 操作,但是一段时间不用

会大部分忘记,之后又要重新查资料

所以自己整理一遍经常用到的 SQL 操作

和使用过程遇到的问题,方便自己快速查阅

一、安装 mysql

1、检查系统上是否有其他 mysql 版本并删除

yum list installed | grep mysql

yum -y remove mysql-libs.x86_64 mysql.x86_64 mysql-server.x86_64

2、下载、安装

CentOS7 默认数据库是 mariadb ,所以我们要先下载 mysql 的 repo 源

进入要安装的目录

cd /usr/local/src/

下载

wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm

安装 mysql 软件包

rpm -ivh mysql57-community-release-el7-8.noarch.rpm

安装 mysql

yum -y install mysql-server

二、设置开机启动

查看系统服务配置列表

chkconfig --list

从系统服务配置列表里面选出 mysql 相关

systemctl list-unit-files | grep mysql

开机启动

systemctl enable mysqld

三、设置 root 账号密码

启动 mysql

systemctl start mysqld

初次安装时候使用该命令查询默认的 mysql root 密码

grep "password" /var/log/mysqld.log

mysql 安全安装(用于生产环境 做一些常规化安全设置)

mysql_secure_installation

配置完成后,使用上面查到的密码登录 mysql

mysql -h localhost -u root -p

-h 表示主机 -u 表示用户名 -p 表示密码

-h 默认是 localhost ,所以可以不写,最后一般这么写

mysql -uroot -p

四、设置远程登录账号

grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码"

grant all privileges on *.* to 'root'@'%' identified by '密码' with grant option;

刷新权限

flush privileges;

五、mysql 常规操作

登录成功后可以查看 mysql 数据库信息

注意:以下操作都是在登录 mysql 下进行

常用操作

1、库操作

创建数据库 testdb

create database testdb;

列出所有数据库

show databases;

删除数据库

drop database '数据库名'

选择 mysql 数据库

use mysql;

2、表操作

创建表

create table student (id int, name varchar(20));

删除数据表

drop table '数据表名'

显示数据表结构

describe 表名

列出当前选中的数据库下的所有表

show tables;

在 user 表中选中 user,host,password 字段

select user,host,password from user;

六、添加 mysql 用户

注意:以下操作都是在登录 mysql 下进行

创建了一个名为 test,密码为 123456 的 mysql 用户

localhost 限制了该用户只能在本地访问

若要在任何一台电脑上都能访问,可以把 localhost 改为 '%' ,表示任何主机地址

create user 'test'@'localhost' identified by '123456';

授予数据库的操作权限:

grant all privileges on *.* to 'test'@'localhost'

合起来写,创建并授权

grant all privileges on *.* to 'test'@'localhost' identified by '123456'

删除用户:

drop user 'test'@'localhost';

修改权限:

revoke all privileges on *.* from 'test'@'localhost';

查询用户授权:

show grants for 'test'@'localhost';

最后一定要刷新

flush privileges;

七、使用 mysql 的一些坑

1、阿里云数据库

阿里云数据库默认编码是 latin1,latin1 虽然向下兼容 utf8,但我们尽量换成 utf8 编码,否则可能会出现中文乱码

出现乱码时候可以执行一下指令查看

show variables like 'character%';

show variables like 'collation_%';

上面都是 latin1 的编码

现在我们把编码格式修改为 utf8

修改 vi /etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0
character-set-server=utf8
collation-server=utf8_general_ci
#performance_schema_max_table_instances=400
table_definition_cache=400
table_open_cache=256
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION [mysql]
default-character-set = utf8 [mysql.server]
default-character-set = utf8 [mysqld_safe]
default-character-set = utf8
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid [client]
default-character-set = utf8

修改完成后重启 mysql

service mysqld restart

继续执行下面的命令查看

show variables like 'character%';

show variables like 'collation_%';

注意点:

1. 要保证数据库中存的数据与数据库编码一致,即数据编码与 character_set_database 一致

2. 要保证通讯的字符集与数据库的字符集一致
即 character_set_client, character_set_connection 与character_set_database 一致 3. 要保证 SELECT 的返回与程序的编码一致,即 character_set_results 与程序编码一致 4. 要保证程序编码与浏览器、终端编码一致 5. 简单一点的话,就将各个字符集都设为一致的,写入mysql的配置文件

2、can not connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'(100)

使用 mysql -uroot -p 登录不了 mysql

解决:

a、查看 mysql 状态

mysql status

b、查看 mysql.sock 位置并验证

查找 mysql.sock 位置

find / -name mysql.sock

验证通过应该就可以进入 mysql 了

mysql -u root -p -S 上面找到的 mysql.sock 位置

c、验证 mysql.sock 文件权限和用户是否正确

如果是权限问题,修改权限

chown -R mysql:mysql 上面找到的 mysql.sock 位置

启动成功,就没问题了

mysqld start

d、永久解决问题

修改 /etc/my.cnf

添加以下内容到 /etc/my.cnf

[client]
socket = 上面找到的 mysql.sock 位置
[mysqld]
socket = 上面找到的 mysql.sock 位置

八、其他操作

1、查看mysql安装路径

ps -ef | grep mysql

查看文件安装路径

whereis mysql



/usr/lib64/mysql

查看运行文件路径

which mysql



usr/bin/mysql

--datadir 参数表示数据库文件的存放路径

/var/lib/mysql

MySQL常规操作以及问题的更多相关文章

  1. MySQL常规操作

    数据库的相关概念 一.数据库的好处 1.可以持久化数据到本地 2.结构化查询 二.数据库的常见概念 ★ 1.DB:数据库,存储数据的容器 2.DBMS:数据库管理系统,又称为数据库软件或数据库产品,用 ...

  2. mysql服务器的常规操作

    mysql服务器的常规操作 导读 MySQL是一个小型关系数据库管理系统,目前被广泛的应用在Internet上的中小型网站中,体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,使得许多中小型网站 ...

  3. 数据库mysql的常规操作

    1. 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的建立在计算机存储设备上的仓库. 简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进 ...

  4. postgresql 常规操作以及检查备份

    一.建表时,复制源表的信息test=# test=# \d test.t1 Table "test.t1" Column | Type | Collation | Nullable ...

  5. postgres 常规操作杂记

    分布式:1.扩容不方便(数据重分布)2.分布键变更很麻烦3.分布键选择(架构设计)谨慎4.跨库join性能差5.分布式事务性能差6.sql限制多,功能确实多7.应用改造成本巨大8.全局一致性时间点恢复 ...

  6. EFCore常规操作生成的SQL语句一览

    前言 EFCore的性能先不说,便捷性绝对是.Net Core平台下的ORM中最好用的,主要血统还百分百纯正. EFCore说到底还是对数据库进行操作,无论你是写Lamda还是Linq最后总归都是要生 ...

  7. MySQL误操作后如何快速恢复数据

    基本上每个跟数据库打交道的程序员(当然也可能是你同事)都会碰一个问题,MySQL误操作后如何快速回滚?比如,delete一张表,忘加限制条件,整张表没了.假如这还是线上环境核心业务数据,那这事就闹大了 ...

  8. MYSQL基础操作

    MYSQL基础操作 [TOC] 1.基本定义 1.1.关系型数据库系统 关系型数据库系统是建立在关系模型上的数据库系统 什么是关系模型呢? 1.数据结构可以规定,同类数据结构一致,就是一个二维的表格 ...

  9. mysql常用操作语句

    mysql常用操作语句 1.mysql -u root -p   2.mysql -h localhost -u root -p database_name 2.列出数据库: 1.show datab ...

随机推荐

  1. iSkysoft iMedia Converter Deluxe Mac如何制作视频?视频格式转换工具制作动图的方法

    使用iSkysoft iMedia Converter Deluxe Mac如何制作视频?使用视频格式转换工具,你可以轻松进行动图或视频的制作,也可以把你喜欢的视频的某一段提取出来,制作成你自己风格的 ...

  2. 【leetcode】985. Sum of Even Numbers After Queries

    题目如下: We have an array A of integers, and an array queries of queries. For the i-th query val = quer ...

  3. JVM&GC

    先回顾啥是JVM: 引用: 强引用(Strong Reference)•默认的赋值语句可以生成一个强引用•GC时不会被释放 软引用(Soft Reference)•仅被java.lang.ref.So ...

  4. POJ 2528(线段树+离散化+特殊离散化)网上博客很少有人真正写对!!! 是POJ数据太水...

    Description The citizens of Bytetown, AB, could not stand that the candidates in the mayoral electio ...

  5. Django中ORM对数据库的增删改查操作

         前言 什么是ORM?  ORM(对象关系映射)指用面向对象的方法处理数据库中的创建表以及数据的增删改查等操作. 简而言之,就是将数据库的一张表当作一个类,数据库中的每一条记录当作一个对象.在 ...

  6. mysql left join 用法说明

    left join中关于where和on条件的几个知识点: 1.多表left join是会生成一张临时表,并返回给用户 2.where条件是针对最后生成的这张临时表进行过滤,过滤掉不符合where条件 ...

  7. thinkphp 连接多个数据库

    config配置文件 //数据库配置信息 'DB_CONFIG' => array( 'DB_TYPE' => 'mysql', // 数据库类型 'DB_HOST' => 'loc ...

  8. 框架-.NET:ASP.NET Core

    ylbtech-框架-.NET:ASP.NET Core ASP.NET Core是一个免费且开放源代码的Web框架,以及由微软和社区开发的下一代ASP.NET.它是一个模块化框架,既可以Window ...

  9. MySQL-存储过程动态执行sql

    存储过程动态执行 sql --存储过程名和参数,参数中in表示传入参数,out标示传出参数,inout表示传入传出参数 create procedure p_procedurecode(in sumd ...

  10. 自定义npm命令行工具,并发布到www.npmjs.com

    1.自定义一个npm脚本 - 1.新建一个项目(在任何路径都可以); - 2.使用`npm init -y`初始化项目 - 3.新建一个index.js文件,在文件的第一行添加 `#!/usr/bin ...