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支持事物的控制

posted on 2018-11-05 17:07  singleSpace  阅读(165)  评论(0编辑  收藏  举报