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