zoukankan      html  css  js  c++  java
  • 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

    都读到最后了、留下个建议如何
  • 相关阅读:
    Httpclient请求数据(post)
    实现定位(无基本地图)
    Httpclient请求数据
    带参数路径的刷新和加载
    AsyncTask异步交互和httpurlconnection结合使用
    判断网络状态
    Android数字签名
    app加固
    定位和xml解析和gson解析加上拉加载,下拉刷新
    下载app后自动安装程序
  • 原文地址:https://www.cnblogs.com/linjunfu/p/11811631.html
Copyright © 2011-2022 走看看