【无标题】

Linux中的mysql数据库

  1. 什么是数据库

数据库(database)就是一个存放电子数据的仓库,安装一定的规则和标准结合数据结构和算法对数据进行组织和存储

  1. SQL语言

SQL:结构化查询语言,全拼是Structured Query Language

  1. 安装mysql数据库

    3.1 基于Debian平台的linux系统,如ubuntu中,可以直接使用apt命令安装

    ​ sudo apt install -f mysql-client=5.7* mysql-community-server=5.7* mysql-server=5.7*

    3.2 CentOS中由于历史原因,如果直接运行 yum install mysql 命令,不会安装mysql,而是安装的MariaBD,因此需按以下步骤:

    • 从mysql官网下载mysql仓库,会下载到 mysql80-community-release-el7-3.noarch.rpm 的文件

      wget https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm

    • 如果直接运行 yum install mysql80-community-release-el7-3.noarch.rpm 安装的是8.0版本的,目前大多数使用的依然是5.7版本,如需安装5.7版本,需要使用 vim /etc/yum.repos.d/mysql-community.repo 命令修改 mysql-community.repo文件,将文件中 mysql80的enable值改为0,mysql57的enable值改为1:

      [mysql57.community]
      name=MySQL 5.7 Connunity 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
      
      name=MySQL 8.0 Connunity 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
      
    • 运行 yum install mysql-community-server 安装mysql

  2. 开启数据库服务

    • ubuntu: service mysql start|stop|restart|status
    • Deepin: systemctl start|stop|restart|status mysqld
    • CentOS7: systemctl start|stop|restart|status mysqld
    • CentOS6: service mysql start|stop|restart|status
  3. 连接数据库

    各linux系统连接数据库的语法是一样的,为:

    mysql -hlocalhost -uroot -p123456 -p3306

    • -h:host(ip地址)localhost = 127.0.0.1
    • -u:username(用户账号),此处的root跟登录linux系统的root不是同一个
    • -p:password(密码)
    • -p:port(服务器默认端口3306)

    在ubuntu里,root用户的默认密码是空,输入登录linux系统的密码直接登录;在CentOS7中,mysql安装完成后会生成一个临时密码,可以通过命令查看这个默认密码:

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

    输入临时密码mysql连接成功后会显示:mysql>

    此时运行 show databases; 命令会报错error 1820,以临时密码登录无法进行任何操作,需修改密码

  4. 设置mysql 的root用户密码

    alter user root@localhost identified with mysql_native_password by ‘新密码’;

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

    GRANT ALL PRIVILEGES on *.* to ‘用户名’@‘localhost’ IDENTIFIED BY “密码” WITH GRANT OPTION;

    —创建用户并设置密码

    —*.*代表用户可以操作所有的库和表

    —主机名可以使用’%',代表运行该用户从认可机器登录

    flush privileges;

    —刷新使权限生效

  5. 退出数据库

    有4种效果相同的退出方法:

    • exit
    • quit
    • \q
    • ctl+d
  6. 忘记密码?

    8.1 打开配置文件:vim /etc/my.cnf ;不同版本的linux,不同版本的mysql,不同的安装方法,配置文件的名字及路径不同,可能的路径有 /ets/mysql/mysql.d/mysql.cnf

    8.2 在配置文件中添加:

    [mysql]
    skip-grant-tables
    

    如果文件中已经存在[mysql],只需要将skip-grant-tables添加到下方即可

    8.3 修改文创后保存并退出,重启服务:

    ​ sudo systemctl restart mysql.service

    8.4 sudo mysql -uroot重新连接,此处可以不使用密码直接登录

    8.5 执行 update mysql,user set authentication_string=passwod(‘密码’) where user=‘root’; 修改root用户密码

    8.6 flush privileges刷新,使策略立即生效,并退出mysql客户端

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

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

    8.9 现在可以使用新密码登录mysql服务器了

  7. 数据库常用操作

    9.1 创建账号及授权

    • 8.0之前的版本

      GRANT ALL PRIVILEGES on *.* to ‘用户名’@‘主机’ IDENTIFIED BY “密码” WITH GRANT OPTION;

      flush pribileges;

      • ALL PRIVILEGES:全部权限,一共14个权限,也可以指定:

        –select

        –insert

        –update

        –delete

        –delete

        –create

        –drop

        –index

        –alter

        –grant

        –references

        –reload

        –shutdown

        –process

        –file

      • *.*:运行操作的数据库和数据表

      • 主机名:允许用户从哪个主机登录,%表示允许从任意主机登录

      • WITH GRANT OPTION:带有该子句表示允许用户将自己的权限授予其他用户

    • 8.0之后的版本

      GRANT USER ‘用户名’@‘主机’ IDENTIFIED BY ‘密码’; --创建用户

      GRANT ALL ON *.* TO ‘用户名’@‘主机’ WITH GRANT OPTION;–授权

    9.2 修改密码

    update user set authentication_string=password('你的密码') where user='root'  或者
    
    alter user '用户名'@'主机名' identified with mysql_native_password by '你的密码';
    
    alter方法受安全策略影响,密码需要有大小写特殊字符等
    

    9.3 查看权限

    show grants; --查看当前用户的权限
    
    show grants for 'abc'@'localhost'; --查看用户abc的权限
    

    9.4 回收权限

    revoke all privileges on *.* from 'abc'@'localhost'; --回收用户abc的所有权限
    
    revoke grant option on *.* from 'abc'@'localhost';  --回收权限的传递
    

    9.5 删除用户

    drop user 用户名@'%';
    
    1. 创建可以远程登录的mysql账号
    • 创建一个允许任意主机登录的账号

      GRANT ALL PRIVILEGES on *.* to 'Jack'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
      
      flush privileges;
      
    • 修改mysql配置文件(不同linux系统,不同版本mysql,配置文件的存储路径不同,ubuntu18.04中mysql的配置文件保存在/etc/mysql/mysql.conf.d/mysql.cnf中;CentOS7.7中其配置文件保存在/etc/my,cnf中

    sudo vim /etc/my.cnf
    
    • 如果配置文件中有 bind-address=127.0.0.1代码,将其注释掉,让计算机允许mysql远程登录

    • 打开服务器的3306端口

    • 使用客户端远程登录到mysql数据库

      sudo mysql -uJack -h 远端服务器地址 -p 3306 -p
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值