Linux笔记:安装mysql以及使用命令行对mysql进行管理和维护

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
发布了390 篇原创文章 · 获赞 183 · 访问量 67万+

猜你喜欢

转载自blog.csdn.net/Tyro_java/article/details/104122125