本文最后更新于:1 个月前

安装数据库

  1. 基于Debian平台的Linux系统,可以直接使用apt命令安装mysql

    sudo apt install mysql

由于历史原因,如果在CentOS里运行 yum install mysql 不会安装mysql数据库,而是会安装 MariaDB

  1. mysql官网上下载mysql仓库,会得到 mysql80-community-release-el7-3.noarch.rpm 文件。

    wget https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm
  1. 运行 yum install mysql80-community-release-el7-3.noarch.rpm 安装mysql repository

  2. 默认安装的mysql版本是8.0,而我们在开发中常用的是5.7版本,所以需要修改配置文件,默认安装 5.7版本。使用 vim /etc/yum.repos.d/mysql-community.repo 命令修改 mysqlcommunity.repo 文件。将文件中,mysql80的enable值改为0,mysql57的enable值改为1

    [mysql57-community]
    name=MySQL 5.7 Community Server
    baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
    enabled=1
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
    
    [mysql80-community]
    name=MySQL 8.0 Community Server
    baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/7/$basearch/
    enabled=0
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
  3. 运行 yum install mysql-community-server 安装mysql数据库。

开启数据库服务

  1. Ubuntu : service mysql start|stop|restart|status
  2. Deepin : systemctl start|stop|restart|status mysqld
  3. CentOS7 :systemctl start|stop|restart|status mysqld
  4. CentOS6 : service mysqld start|stop|restart|status

连接数据库

各个 Linux 系统连接数据库的语法都一样

语法: mysql -hloaclhost -uroot -p123456 -P3306·

  1. -h : host(ip地址) localhost = 127.0.0.1
  2. -u : username(用户账户)
  3. -p : password(密码)
  4. -P : port(端口, 默认端口3306)

在其他版本的Linux里,root用户的默认密码是空,可以不使用密码直接登录。但是在CentOS7里, mysql安装完成以后,会生成一个临时密码,我们需要通过命令查看到这个默认密码。

cat /var/log/mysqld.log |grep password

打开文件后,找到这一行A temporary password is generated for rootglocalhost: yeTVMMXRF3

冒号后的便是数据库的临时密码

设置数据库密码

数据库连接成功以后,因为此时使用的是root用户的临时密码,此时无法进行任何的操作,需要先修改 root用户的密码。

alter user [email protected] identified with mysql_native_password by '你的密码';

备注 第一次使用 root 连接后最好添加一个新的用户来操作。出于安全考虑,日常开发中最好不要使用 root

-- 创建新用户,并设置密码
-- *.* 代表该用户可以操作任何库、任何表
-- 主机名可以使用 '%', 代表允许该用户从任何机器登陆
GRANT ALL PRIVILEGES on *.* to '用户名'@'localhost' IDENTIFIED BY "密码" WITH
GRANT OPTION;
-- 刷新使权限生效
flush privileges;

退出数据库

四种方式效果一样:

  1. exit
  2. quit
  3. \q
  4. 快捷键: ctrl + d

忘记密码

  1. 打开配置: vim /etc/my.cnf 不同版本的Linux,不同版本的mysql,不同的安装方法,配置名字以及路径不尽相同

  2. 添加这么一段:

    [mysqld]
    skip-grant-tables

如果文件中已存在 [mysqld] , 则直接将 skip-grant-tables 写到其下方即可。

  1. 修改完成后,保存退出,重启服务: sudo systemctl restart mysql.service

  2. 使用命令 sudo mysql -uroot 重新连接MySql服务器,此时可以不使用密码直接登录用户。

  3. 执行 update mysql.user set authentication_string=password('你的密码') where user="root"; 修改root用户的密码。

  4. 执行 flush privileges 刷新策略,使策略立刻生效,并退出mysql客户端。

  5. 修改 /etc/msyql/mysql.cnf 文件,注释掉第二步添加的两段内容。

  6. 运行 sudo systemctl restart mysql.service 重启mysql服务器。

  7. 此时可以使用新密码登录mysql服务器。

权限管理

  • MySQL 权限的两个阶段

    1. 第一阶段为连接验证,主要限制用户连接 mysql-server 时使用的 ip及密码。
    2. 第二阶段为操作检查,主要检查用户执行的指令是否被允许,一般非管理员账户不被允许执行 drop、delete 等危险操作。
  • 权限控制安全准则

    1. 只授予能满足需要的最小权限,防止用户执行危险操作。 – 创建新用户,并设置密码 – . 代表该用户可以操作任何库、任何表 – 主机名可以使用 ‘%’, 代表允许该用户从任何机器登陆 GRANT ALL PRIVILEGES on . to ‘用户名‘@’localhost’ IDENTIFIED BY “密码” WITH GRANT OPTION; – 刷新使权限生效 flush privileges; [mysqld] skip-grant-tables
    2. 限制用户的登录主机,防止不速之客登录数据库。
    3. 禁止或删除没有密码的用户。
    4. 禁止用户使用弱密码。
    5. 定期清理无效的用户,回收权限或者删除用户。

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!

Flask的使用 上一篇
Vim 编辑器在 ssh 中的使用 下一篇