MySQ管理数据库 —MySQL 5.7数据库

53 阅读4分钟

安装mysql

yum安装5.7版本

#搭建yum源

[root@centos7 ~]#cat >/etc/yum.repos.d/mysql.repo <<EOF
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/
enabled=1
gpgcheck=0
EOF


[root@centos7 ~]#yum -y install mysql-community-server
[root@localhost yum.repos.d]# systemctl start mysqld
[root@localhost yum.repos.d]# ss -ntap |grep 3306
[root@localhost yum.repos.d]# mysql -u root -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

[root@centos7 ~]#grep password /var/log/mysqld.log
[root@localhost yum.repos.d]# mysql -u root -p'+8saq%5+ljzG'
#特殊符号用单引号引起来

修改密码

image.png

安装mycli 插件 客户端工具

客户端工具和mysql, 使用新安装的pip版本(通过符号链接pip37)从阿里云镜像安装mycli

[root@localhost opt]#yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
[root@localhost opt]#tar zxvf Python-3.7.7_.tgz
[root@localhost Python-3.7.7]#cd Python-3.7.7/
[root@localhost Python-3.7.7]#./configure --prefix=/usr/local/Python-3.7.7/
[root@localhost Python-3.7.7]#make  
[root@localhost Python-3.7.7]#make install
[root@localhost Python-3.7.7]#ln -s  /usr/local/Python-3.7.7/bin/python3.7  /usr/bin/python37
[root@localhost Python-3.7.7]#ln -s /usr/local/Python-3.7.7/bin/pip3.7 /usr/bin/pip37

pip37 install --upgrade pip -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com   
#升级

[root@localhost Python-3.7.7]#pip37 install mycli -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
[root@localhost Python-3.7.7]#ln -s /usr/local/Python-3.7.7/bin/mycli /usr/bin/mycli
[root@localhost Python-3.7.7]#mycli -u root -p 123123[root@localhost ~]#vim /etc/my.cnf                       
[mysql]
prompt=(\u@\h) [\d]>\_
auto-rehash

图形化界面:

[mysqld]
skip_grant_tables
​

image.png

基本操作

修改字符集
vim /etc/my.cnf
[mysqld]
character-set-server=utf8mb4

image.png

建立数据库 db1 image.png

新建数据库 指定字符集
mysql> create database db2 character set 'utf8';

mysql> create database db2 charset=utf8;
#指定utf8 字符集

mysql> show create database db1;
#查看数据库的基础信息

REATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

删除数据库

格式: DROP DATABASE|SCHEMA [IF EXISTS] 'DB_NAME';

查看数据库列表

MySQL root@(none):(none)> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| db1                |
| db3                |
| hellodb            |
| mydatabase         |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
show create database db1;

表操作

新建表

create table 表名 (字段1 数据类型,字段2 数据类型[,...] [,PRIMARY KEY (主键名)]);

create table student (id smallint unsigned primary key auto_increment , name varch
                    -> ar(10), age tinyint unsigned ,gender enum('m','f') default 'm');
          
  1. id smallint unsigned primary key auto_increment:

    • id: 字段名
    • smallint: 数据类型,表示一个小的整数。
    • unsigned: 表示这个字段只存储非负整数。
    • primary key: 表示这个字段是这个表的主键。主键是唯一标识表中每一行的字段,且不能有重复值,也不能有NULL值。
    • auto_increment: 表示当向表中插入新行但没有为id字段指定值时,MySQL会自动为这个字段生成一个新的值。这个值通常是比表中任何现有id值都大的下一个整数。
  2. name varchar(10) :

    • name: 字段名
    • varchar(10): 数据类型,表示一个可变长度的字符串,最大长度为10个字符。
  3. age tinyint unsigned:

    • age: 字段名
    • tinyint: 数据类型,表示一个非常小的整数。
    • unsigned: 表示这个字段只存储非负整数。
  4. gender enum('M','F') default 'M' :

    • gender: 字段名
    • enum('M','F'): 数据类型,表示一个枚举类型,只能包含预定义的值列表中的一个值。在这里,它只能是'M'(代表男性)或'F'(代表女性)。
    • default 'M': 如果在插入新行时没有为gender字段指定值,它将默认为'M'。

查看表的结构

MySQL root@(none):db1> desc student;   ###describe
+--------+----------------------+------+-----+---------+----------------+
| Field  | Type                 | Null | Key | Default | Extra          |
+--------+----------------------+------+-----+---------+----------------+
| id     | smallint(5) unsigned | NO   | PRI | <null>  | auto_increment |
| name   | varchar(10)          | YES  |     | <null>  |                |
| age    | tinyint(3) unsigned  | YES  |     | <null>  |                |
| gender | enum('m','f')        | YES  |     | m       |                |
+--------+----------------------+------+-----+---------+----------------+

插入数据

MySQL root@(none):db1> insert student (name,age) values ('cxk',66);


MySQL root@(none):db1> select * from student   ##查看数据
+----+------+-----+--------+
| id | name | age | gender |
+----+------+-----+--------+
| 1  | cxk  | 66  | m      |
+----+------+-----+--------+

修改表结构

mysql [db1]> alter table student add phone char(11) not null ; 命令字 命令字 表名 关键字 子段名称字段属性

image.png

change 修改字段 名称

image.png

drop 删除字段

image.png

其他设置

alter [ignore] table tbl_name 
alter_specification [, alter_specification] ... 
alter_specification: 
add [column] column_definition [first | after col_name ]  //添加字段
|alter [column]col_name{set default literal|drop default} //修改字段默认值
|change [column] old_col_name column_definition        	  //重命名字段
[first|after col_name]	 
|modify [column]column_definition[first|aftercol_name]    //修改字段数据类型
drop [column] col_name			    //删除列
rename table old [TO] new_tbl_name			//对表重命名
|order by col_name			        //按字段排序
|convert TO character set charset_name[collate collation_name] //将字符集转换为二进制
|[default] character set charset_name [collate collation_name] //修改表的默认字符集