跳转至

MySQL Database

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

目录结构

  • /etc/my.cnf: 全局配置文件,用来配置 MySQL 端口、数据存储、以及优化参数
  • /var/lib/mysql: 数据库数据目录,用于存放数据库数据
  • /var/log/mysql/: 日志存放,包括慢日志、错误日志
  • /etc/mysql/my.cnf: 全局配置文件,用来配置 MySQL 端口、数据存储、以及优化参数
  • /var/lib/mysql: 数据库数据目录,用于存放数据库数据
  • /var/log/mysql/: 日志存放,包括慢日志、错误日志

服务管理

systemctl start mysqld     # 启动 mysql
systemctl restart mysqld   # 重启 mysql
systemctl stop mysqld      # 停止 mysql
systemctl status mysqld    # 查看 mysql 服务状态
systemctl start mysql     # 启动 mysql
systemctl restart mysql   # 重启 mysql
systemctl stop mysql      # 停止 mysql
systemctl status mysql    # 查看 mysql 服务状态

MySQL 常见问题

MySQL 如何备份数据库?

备份某一个数据库

mysqldump -u root  -p dbname > backdb.sql

备份数据库中的某个表

mysqldump -u root  -p dbname tbname1, tbname2 > backdb.sql

备份多个数据库

mysqldump -u root  -p --databases dbname1, dbname2 > backdb.sql

备份系统中所有数据库

mysqldump -u root  -p --all-databases > backdb.sql

MySQL 如何导入/还原数据库?

mysql  -u root -p dbname < backdb.sql

如何重置 MySQL 密码?

  1. 停止 mysql 服务
     systemctl stop mysqld # Rocky Linux
     systemctl stop mysql # ubuntu
    
  2. 开启跳过密码验证登录的MySQL服务

    mysqld --console --skip-grant-tables  --user=mysql &
    

  3. 重置密码

    mysql -e "use mysql;update user set password=password('new_password') where user='root';"
    
    mysql -e "use mysql;update user set authentication_string = password('new_password') where user = 'root';"
    
    mysql -e "use mysql;update user set authentication_string = 'new_password' where user = 'root';"
    
  4. 停止 MySQL 进程

    ps aux | grep "mysqld" |grep -v grep| cut -c 9-15 | xargs kill -9
    

  5. 启动 MySQL 服务

     systemctl start mysqld # Rocky Linux
     systemctl start mysql # ubuntu
    

如何开启远程访问

  1. 管理员用户登录 MySQL,设置需要开启远程访问的用户(以 root 用户为例)
    # 说明:root表示用户名,%代表所有的ip地址,也可以设置指定的ip地址
    mysql> grant all privileges on *.*  to  'root'@'%'  identified by 'you_password'  with grant option;
    
    # 刷新权限
    mysql> flush privileges;