MySQL 安装
- $
apt update
- $
apt install -y mysql-server mysql-client
- 安装时设置密码,继续后面的安装
MySQL 连接
- $
mysql -uroot -p
- 输入密码即可进入
关于MySQL服务的操作
- 停止:$
service mysql stop
- 启动:$
service mysql start
- 重启:$
service mysql restart
MySQL的配置
- $
vi /etc/mysql/my.cnf
(一些高版本的配置文件可能迁移到了:/etc/mysql/mysql.conf.d/mysqld.cnf
)
[mysqld]
basedir = /usr/
datadir = /var/lib/mysql
port = 3306
bind-address = 127.0.0.1
max_connections = 100
slow_query_log = 1
slow_query_log_file = slow.log
long_query_time = 2
innodb_buffer_pool_size = 3G
basedir
表示:mysql本身安装在哪里datadir
表示:项目中使用的数据存放的位置port
表示:连接mysql的端口号bind-address
表示:如果是127.0.0.1只能在本机进行连接,从另外的电脑连是连不上的max_connections
表示:最大连接数,如果值设置的比较小,但是项目并发较高,就会超出这个连接数值,就会提示不能接受更多连接,可根据实际情况进行调整slow_query_log
表示:慢查询,日志开启slow_query_log_file
表示:慢查询日志记录的文件long_query_time
表示:慢查询,值为sql的执行时间,比如,值为2,则表示超过2s那么就代表这是一次慢查询innodb_buffer_pool_size
表示:innodb的缓存值,默认安装后是没有配置这一项的,默认安装后mysql的性能比较差,一般调节为服务器总内存的70%,也要兼顾是否有其他服务使用内存
- mysql 有两类引擎:
InnoDB
(默认、推荐引擎) 、MyISAM
(基本不用,被淘汰了,不支持事务)
MySQL的状态
- 进入mysql, 输入命令 $
status
或 $\s
会输出mysql 当前的一些状态,我们可以看到最后的输出
Threads: 1 Questions: 11 Slow queries: 0 Opens: 107 Flush tables: 1 Open tables: 26 Queries per second avg: 0.026
Threads
: 表示线程数Questions
: 表示一共执行了多少条指令Slow queries
: 表示慢查询的数量,如果有,可以通过配置的日志文件查看慢查询的SQL语句到底有哪些Queries per second avg
表示平均每秒的查询次数, 反应了服务器的吞吐量,直观可以反应服务器的性能水平
- 我们还可以通过$
show variables like 'max_connections';
-
max_connections
:查看当前最大连接数
- 我们还可以通过$
show global status like 'max_used_connections';
-
Max_used_connections
:正在连接的连接数
- 如果
Max_used_connections
的值很接近max_connections
的值了,就说明很可能将要出错了 - 通过$
show variables like 'innodb_buffer_pool_size';
-
innodb_buffer_pool_size
: 配置文件设置的缓存大小
- 通过$
show status like 'innodb_rows_%';
展示innodb引擎所有的crud的情况
Innodb_rows_deleted
Innodb_rows_inserted
Innodb_rows_read
Innodb_rows_updated
- 如果项目以查询为主,那么read的值就会特别大, 如果是以修改和新增为主的, inserted值就会特别大
- 可以根据这些反馈, 去优化MySQL
- 查看更多配置 https://dev.mysql.com/doc/refman/5.7/en/
MySQL的备份
1 ) 备份
- $
mysqldump -uroot -p yourdb > backup.sql;
- 使用
mysqldump
命令将你的数据库备份到backup.sql中 -
>
这个符号表示输出重定向
2 ) 恢复
- 首先创建之前的数据库: $
create database yourdb;
(如果之前数据库存在,先drop删掉,因为sql文件中中没有数据库存在删除的sql,只有关于表的) - 开始恢复: $
mysql -uroot -p yourdb < backup.sql;
-
<
这个符号表示输入重定向
3 )补充
- 在后期运维的时候,我们可以通过脚本来定时对数据库进行备份操作
用户授权
1 ) 查看MySQL的用户
- 进入mysql中默认的mysql数据库,查询里面的user表
- $
select host,user from mysql.user;
host user
localhost debian-sys-maint
localhost mysql.session
localhost mysql.sys
localhost root
- 可以看到最后的用户root的host是localhost,这就限制了root只能在本机进行连接
- 我们可以授权一个用户通过一个密码进行远程连接
2 ) 修改配置文件
- 进入
/etc/mysql/my.cnf
或一些版本的mysql/etc/mysql/mysql.conf.d/mysqld.cnf
- 注释掉
bind-address
字段
3 ) 进行用户授权
- 进入sql的命令模式下
- $
grant all on *.* to root@"%" identified by "123456";
-
grant
表示授权 -
all
表示 全部的权限 -
*.*
表示所有数据库的所有表 -
123456
表示你设置的新密码,尽量将密码设复杂些
- 再次查看用户信息 $
select host,user from mysql.user;
host user
% root
localhost debian-sys-maint
localhost mysql.session
localhost mysql.sys
localhost root
- 发现新的root用户的主机变成了
%
(表示已经没有任何限制了)
- 因为我们修改了配置文件,所以我们需要重启mysql $
service mysql restart
- 在其他机器上通过ip地址和新的用户和密码进行连接即可!
- 备注:如果没有必要最好不要开启远程访问,非常不安全
- 如果要开启,那么请设置非常复杂的密码
- 而且在进行授权的时候,不要使用
%
,使用你自己的ip