1、安装目录
我这里安装在了/use/local 目录下,根据自己项目分配对应的即可,包括以下所指定的data 存储的路径,根据实际情况指定即可。
2.下载mysql
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz
官网自己可以去找到合适的对应版本
https://dev.mysql.com/downloads/mysql/%c2%a0/
3.解压mysql
tar xvJf mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz
4.重命名文件夹
mv mysql-8.0.21-linux-glibc2.12-x86_64 mysql-8.0
5.创建data文件夹 存储文件
cd /usr/local/mysql-8.0 #根据实际安装的目录进行安装
mkdir data
6.创建用户组以及用户和密码
groupadd mysql
useradd -g mysql mysql
7.授权用户
chown -R mysql.mysql /usr/local/mysql-8.0
8.切换到bin目录下
cd bin
9.初始化基础信息
./mysqld --user=mysql --basedir=/usr/local/mysql-8.0 --datadir=/usr/local/mysql-8.0/data/ --initialize
注意:执行完初始换以后,会有一个临时生成的默认密码,记得顺手保存一下!!
10.编辑my.cnf文件
vi /etc/my.cnf
注释掉默认的文件配置,或者全部清除,把一下配置信息配置上
[mysqld]
basedir=/usr/local/mysql-8.0/
datadir=/usr/local/mysql-8.0/data/
socket=/tmp/mysql.sock
character-set-server=UTF8MB4
11.添加mysqld服务到系统
cp -a ./support-files/mysql.server /etc/init.d/mysql
12.授权以及添加服务
chmod +x /etc/init.d/mysql
chkconfig --add mysql
13.启动mysql
service mysql start
也可以设置成用systemctl 控制配置方式,放到文章最后。
14.查看启动状态
service mysql status
15.将mysql命令添加到系统默认的执行文件中
ln -s /usr/local/mysql-8.0/bin/mysql /usr/bin
16.登录mysql mysql -uroot -p 密码使用之前随机生成的密码
17.修改root密码 其中123456是新的密码自己设置
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '111aaa';
刷新一下刚才的配置
flush privileges;
18.选择mysql数据库
常用的mysql 命令
mysql> use mysql; #切换到 mysql 库
mysql> update user set host='%' where user='root'; #放开远程链接
mysql> flush privileges; #刷新配置
mysql> select version(); #查看当前的数据库版本
show相关语句
查看实例参数 例如:
show variables like '%innodb%';
show global variables like '%innodb%';
show status like 'uptime%';
show global status like 'connection%';
查看数据库链接:
show processlist;
show full processlist;
查询某个表的结构:
show create table tb_name;
查询某个表的详细字段信息:
show full columns from tb_name;
查询某个表的全部索引信息:
show index from tb_name;
查询某个库以cd开头的表:
show tables like 'cd%';
查询某个库中的所有视图:
show table status where comment='view';
查询某个用户的权限:
show grants for 'test_user'@'%';
2.查看账户相关信息
# 这里先介绍下CONCAT函数:在MySQL中 CONCAT()函数用于将多个字符串连接成一个字符串,
利用此函数我们可以将原来一步无法得到的sql拼接出来,后面部分语句有用到该函数。
当拼接字符串中出现''时 需使用转义符
查看所有用户名:
SELECT DISTINCT
CONCAT(
'User: '',
user,
''@'',
host,
'';'
) AS QUERY
FROM
mysql.user;
查看用户详细信息:
SELECT user,
host,
authentication_string,
password_expired,
password_lifetime,
password_last_changed,
account_locked
FROM
mysql.user;
KILL数据库链接:
# 下面列举SQL只是拼接出kill 链接的语句,若想执行 直接将结果复制执行即可。
杀掉空闲时间大于2000s的链接:
SELECT
concat( 'KILL ', id, ';' )
FROM
information_schema.`PROCESSLIST`
WHERE
Command = 'Sleep'
AND TIME > 2000;
杀掉处于某状态的链接:
SELECT
concat( 'KILL ', id, ';' )
FROM
information_schema.`PROCESSLIST`
WHERE
STATE LIKE 'Creating sort index';
杀掉某个用户的链接:
SELECT
concat( 'KILL ', id, ';' )
FROM
information_schema.`PROCESSLIST`
WHERE
where user='root';
查看库或表大小:
# 查看整个实例占用空间大小:
SELECT
concat( round( sum( data_length / 1024 / 1024 ), 2 ), 'MB' ) AS data_length_MB,
concat( round( sum( index_length / 1024 / 1024 ), 2 ), 'MB' ) AS index_length_MB
FROM
information_schema.`TABLES`;
查看各个库占用大小:
SELECT
TABLE_SCHEMA,
concat( TRUNCATE ( sum( data_length )/ 1024 / 1024, 2 ), ' MB' ) AS data_size,
concat( TRUNCATE ( sum( index_length )/ 1024 / 1024, 2 ), 'MB' ) AS index_size
FROM
information_schema.`TABLES`
GROUP BY
TABLE_SCHEMA;
查看单个库占用空间大小:
SELECT
concat( round( sum( data_length / 1024 / 1024 ), 2 ), 'MB' ) AS data_length_MB,
concat( round( sum( index_length / 1024 / 1024 ), 2 ), 'MB' ) AS index_length_MB
FROM
information_schema.`TABLES`
WHERE
table_schema = 'test_db';
查看单个表占用空间大小:
SELECT
concat( round( sum( data_length / 1024 / 1024 ), 2 ), 'MB' ) AS data_length_MB,
concat( round( sum( index_length / 1024 / 1024 ), 2 ), 'MB' ) AS index_length_MB
FROM
information_schema.`TABLES`
WHERE
table_schema = 'test_db'
AND table_name = 'tbname';
查看表碎片及收缩语句:
# 查看某个库下所有表的碎片情况:
SELECT
t.TABLE_SCHEMA,
t.TABLE_NAME,
t.TABLE_ROWS,
concat( round( t.DATA_LENGTH / 1024 / 1024, 2 ), 'M' ) AS size,
t.INDEX_LENGTH,
concat( round( t.DATA_FREE / 1024 / 1024, 2 ), 'M' ) AS datafree
FROM
information_schema.`TABLES` t
WHERE
t.TABLE_SCHEMA = 'test_db'
ORDER BY
datafree DESC;
收缩表,减少碎片:
alter table tb_name engine = innodb;
optimize table tb_name;
查找无主键表:
查看某个库下所有表的碎片情况:
SELECT
t.TABLE_SCHEMA,
t.TABLE_NAME,
t.TABLE_ROWS,
concat( round( t.DATA_LENGTH / 1024 / 1024, 2 ), 'M' ) AS size,
t.INDEX_LENGTH,
concat( round( t.DATA_FREE / 1024 / 1024, 2 ), 'M' ) AS datafree
FROM
information_schema.`TABLES` t
WHERE
t.TABLE_SCHEMA = 'test_db'
ORDER BY
datafree DESC;
收缩表,减少碎片:
alter table tb_name engine = innodb;
optimize table tb_name;
创建一个库、和一个表:
mysql -u root -p #进入数据库
show batabases; #查看已有的数据库
show variables like 'version'; #查看MySQL的版本
create database Demo01; #创建一个Demo01数据库
use demo01; #切换到 demo01 这个库
create table student(stuID varchar(8),stuName varchar(8),stuAge varchar(8)); #创建student 表
show tables; #查看demo01数据库中的所有表
desc student; #查看student表的描述信息
insert into student values("001","张三","18"); #插入一条数据
select * from student where stuID = "001"; # 查询一下刚刚插入的数据
update student set stuName="李四" where stuID="001"; #修改刚刚插入的数据,以将 stuName=张三 改为 stuName=李四
select * from student where stuID = "001"; #使用上面的查询语句看看是否修改成功,输入
delete from student where stuID="001"; # 删除刚刚插入的数据
select * from student where stuID = "001"; # 使用查询语句查看是否删除成功,输入
alter table student rename student01; #将表名由student改为student01,并查看表的描述信息
desc student01; #查看表结构
alter table student01 add stuSex varchar(4) after stuName; # 给student01表增加stuSex属性,加在stuName后面,并查看表的描述信息
desc student01; #查看表结构
alter table student01 add class varchar(8); # 给student01表增加class属性,加在最后面,并查看表的描述信息
alter table student01 add isStudent varchar(4) first; #给student01表增加isStudent属性,加在最前面,并查看描述信息
alter table student01 drop isStudent; # isStudent属性是描述是否为学生,其实这个属性没必要存在,所以删除student01表中isStudent属性
alter table student01 change stuID stuNo varchar(8); #修改student01表中stuID为stuNo,并查看描述信息
exit; #关闭数据库,退出
学无止境!!!
Linux 7 设置成 systemctl 控制的系统命令,可以参照文献的链接,个人觉得已经写的很详细,就没有必要赘 述了
https://www.cnblogs.com/startscorpio/p/12915088.html