MySQL常规操作以及问题
背景
作为一个前端,偶尔搞下后端
要熟悉 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常规操作以及问题的更多相关文章
- MySQL常规操作
数据库的相关概念 一.数据库的好处 1.可以持久化数据到本地 2.结构化查询 二.数据库的常见概念 ★ 1.DB:数据库,存储数据的容器 2.DBMS:数据库管理系统,又称为数据库软件或数据库产品,用 ...
- mysql服务器的常规操作
mysql服务器的常规操作 导读 MySQL是一个小型关系数据库管理系统,目前被广泛的应用在Internet上的中小型网站中,体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,使得许多中小型网站 ...
- 数据库mysql的常规操作
1. 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的建立在计算机存储设备上的仓库. 简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进 ...
- postgresql 常规操作以及检查备份
一.建表时,复制源表的信息test=# test=# \d test.t1 Table "test.t1" Column | Type | Collation | Nullable ...
- postgres 常规操作杂记
分布式:1.扩容不方便(数据重分布)2.分布键变更很麻烦3.分布键选择(架构设计)谨慎4.跨库join性能差5.分布式事务性能差6.sql限制多,功能确实多7.应用改造成本巨大8.全局一致性时间点恢复 ...
- EFCore常规操作生成的SQL语句一览
前言 EFCore的性能先不说,便捷性绝对是.Net Core平台下的ORM中最好用的,主要血统还百分百纯正. EFCore说到底还是对数据库进行操作,无论你是写Lamda还是Linq最后总归都是要生 ...
- MySQL误操作后如何快速恢复数据
基本上每个跟数据库打交道的程序员(当然也可能是你同事)都会碰一个问题,MySQL误操作后如何快速回滚?比如,delete一张表,忘加限制条件,整张表没了.假如这还是线上环境核心业务数据,那这事就闹大了 ...
- MYSQL基础操作
MYSQL基础操作 [TOC] 1.基本定义 1.1.关系型数据库系统 关系型数据库系统是建立在关系模型上的数据库系统 什么是关系模型呢? 1.数据结构可以规定,同类数据结构一致,就是一个二维的表格 ...
- mysql常用操作语句
mysql常用操作语句 1.mysql -u root -p 2.mysql -h localhost -u root -p database_name 2.列出数据库: 1.show datab ...
随机推荐
- while循环语句基础
while循环语句基础 一while循环语句介绍 循环语句命令常用于重复执行一条指令或一组指令,直到条件不再满足时停止, Shell脚本语言的循环语句常见的有while, until, for及s ...
- 阿里云HBase推出普惠性高可用服务,独家支持用户的自建、混合云环境集群
HBase可以支持百TB数据规模.数百万QPS压力下的毫秒响应,适用于大数据背景下的风控和推荐等在线场景.阿里云HBase服务了多家金融.广告.媒体类业务中的风控和推荐,持续的在高可用.低延迟.低成本 ...
- 【LeetCode 30】串联所有单词的子串
题目链接 [题解] 开个字典树记录下所有的单词. 然后注意题目的已知条件 每个单词的长度都是一样的. 这就说明不会出现某个字符串是另外一个字符串的前缀的情况(除非相同). 所以可以贪心地匹配(遇到什么 ...
- [六省联考2017]分手是祝愿 题解(期望dp)
题目描述 B 君在玩一个游戏,这个游戏由 n 个灯和 n 个开关组成,给定这 n 个灯的初始状态,下标为从 1 到 n 的正整数. 每个灯有两个状态亮和灭,我们用 1 来表示这个灯是亮的,用 0 表示 ...
- 【已转移】【Java架构:基础技术】一篇文章搞掂:Spring
本文篇幅较长,建议合理利用右上角目录进行查看(如果没有目录请刷新). 本文是对<SPRING实战第4版>的总结,大家也可以去仔细研读该书 [------------------------ ...
- Java IO Demo
//FileReader FileWriter 读写英文 public void FileReaderAndWriter1() throws Exception { File filePath ...
- C++ pair
C++ pair Pair类型概述 pair是一种模板类型,其中包含两个数据值,两个数据的类型可以不同,基本的定义如下: pair<int, string> a; 表示a中有两个类型,第一 ...
- 十二、SpringBoot 优雅的集成Spring Security
前言 至于什么是Spring security ,主要两个作用,用户认证和授权.即我们常说的,用户只有登录了才能进行其他操作,没有登录的话就重定向到登录界面.有的用户有权限执行某一操作,而有的用户不能 ...
- 漫谈C语言结构体【转】
相信大家对于结构体都不陌生.在此,分享出本人对C语言结构体的学习心得.如果你发现这个总结中有你以前所未掌握的,那本文也算是有点价值了.当然,水平有限,若发现不足之处恳请指出.代码文件test.c我放在 ...
- Java学习之单例模式
单例设计模式:解决一个类在内存中只存在一个对象思想:1.为了避免过多创建类的对象,禁止此类以外创建对象(构造方法私有化)2.为了类可以被使用就必须创建此类对象,只好在本类中,创建对象3.在此类中创建的 ...