zoukankan      html  css  js  c++  java
  • mysql-1安装和数据库的管理

    1.安装

    直接docker安装,客户端使用Navicat Premium。

    docker run -d --name csjmysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
    

    2.管理mysql

    连接数据库

    进入shell,使用命令行进入mysql交互

    docker exec -it csjmysql sh
    mysql -u root -p
    

    2.1mysql用户设置

    方法1:直接在user表插入数据

    use mysql;    #选择数据库
    select host,user,password from user ;
    insert into user (host,user,password,select_priv,insert_priv,update_priv) values ('localhost','guest',PASSWORD('123456'),'Y','Y','Y');
    select host,user,password,select_priv,insert_priv,update_priv from user ;
    
    问题:从上面的结果中guest的密码暴露了,所以要是用PASSWORD方法对密码加密 ```#sql update user set password=PASSWORD('123456') where user='guest'; ``` 注意: * 在 MySQL5.7 中 user 表的 password 已换成了authentication_string。 * password() 加密函数已经在 8.0.11 中移除了,可以使用 MD5() 函数代替。 * 注意:在注意需要执行 FLUSH PRIVILEGES 语句。 这个命令执行后会重新载入授权表。

    同样可以从这张表格中可以修改用户的其他权限
    方法二:为数据库TEST1021添加一个有增删改查权限的用户tom,密码:tom123

     GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON TEST1021.* TO 'tom'@'localhost' IDENTIFIED BY 'tom123';
    

    3.mysql配置文件/ect/my.cnf

    一般情况下,不用更改
    我使用的是docker镜像,配置文件不完整,此处是菜鸟的配置文件内容:

    [mysqld]
    datadir=/var/lib/mysql    #数据存储目录
    socket=/var/lib/mysql/mysql.sock
    
    [mysql.server]
    user=mysql
    basedir=/var/lib
    
    [safe_mysqld]
    err-log=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
    

    3.数据库操作

    use TEST1021;    #选择要使用的数据库
    show databases;    #查看当前有哪些数据库
    show tables;    #显示指定数据库的所有表
    show columns from table_name;    #显示数据表的属性,属性类型,主键信息 ,是否为 NULL,默认值等其他信息。
    show index from table_name;    #显示数据表的详细索引信息,包括PRIMARY KEY(主键)。
    show table status from database_name;    #该命令将输出Mysql数据库管理系统的性能及统计信息。
    

    3.1创建数据库

    方法1:使用sql命令创建数据库

    create database TEST1021;
    

    方法2:使用shell命令 mysqladmin创建数据库

    mysqladmin -u root -p create TEST1021
    

    3.2删除数据库

    方法1:使用sql命令删除

    drop database TEST1021;
    

    使用shell命令删除数据库

    mysqladmin -u root -p drop TEST1021
    

    3.3选择数据库

    use TEST1021;
    

    desc table_name; #查看表结构

    3.4 修改字符集

    set names 'xxx' 命令可以使 与客户端相关的character_set_client、character_set_connection、character_set_results 三者统一,减少编码转换的需要。 client (character_set_client) -----> character_set_connection -------> mysqld ------> client(character_set_results)

    而 真正server端的编码字符集,character_set_server 和 character_set_database ,set names 'xxx' 根本无法修改。

    更多请参考:[https://www.cnblogs.com/digdeep/p/5228199.html](https://www.cnblogs.com/digdeep/p/5228199.html)

    3.5 存储引擎

    Innodb引擎和MyIsam引擎的区别:
    MyIsam是基于表级锁的,Innodb是基于行级锁的。
    如一张表有n行记录,线程1更改第2条记录,线程2更改第1条记录。
    对于MyIsam引擎的表,在执行线程1的时候将锁定整张表,线程2想修改第1条记录,是没有办法执行的,必须等待第1个线程把第2行记录更新完,释放锁之后,才能去更新第1行记录。
    对于Innodb引擎的表,锁是精确到每一行的,线程1和线程2修改不同记录,可以并发执行。如果不同线程更改同一条记录,则需等待上一个线程执行完毕后,下一个线程才能执行。

    引擎事务外键建议操作
    INNODB支持支持增加、修改
    MYISAM不支持不支持查询

    MYISAM读的性能是非常高的,因为它是基于全表去扫描的;而Innodb写入比MyIsam略快一些,Innodb支持事物的控制

  • 相关阅读:
    struts2校验器规范错误解决
    java extend 和 implements 的区别
    Java 中 synchronized的用法详解
    事件处理程序
    Web字体(链接)嵌入
    常见浏览器bug(针对IE6及更低版本)及其修复方法
    canvas实现的时钟效果
    SSM(springMVCspringmybatis)环境搭建01建立Mavenweb项目
    Android中关于软键盘的一些设置
    Android调用系统相机和相册
  • 原文地址:https://www.cnblogs.com/csj2018/p/9910174.html
Copyright © 2011-2022 走看看