Ubuntu20.04安装MySQL数据库

1、说明

  • 1.1、MySQL介绍
    MySQL是一个开源数据库管理系统,通常作为流行的LAMP(Linux,Apache,MySQL,PHP / Python / Perl)堆栈的一部分安装。它使用关系数据库和SQL(结构化查询语言)来管理其数据。
  • 1.2、先决条件
    在安装之前需要确保您以具有sudo特权的用户身份登录。

2、安装步骤

  • 2.1、更新列表

    sudo apt update
    sudo apt upgrade
    
  • 2.2、安装MySQL服务器server

    sudo apt install mysql-server
    

    这里需要提一下,在其他的安装教程中,会提到会提示您创建root密码,实际操作中并未要求我创建密码,这里正常安装就行,密码之后再设置。

  • 2.3、安装MySQL客户端client

    sudo apt install mysql-client
    
  • 2.4、mysql-server和mysql-client区别
    mysql-server 是MySQL核心程序,是MySQL数据库服务器,用于生成管理多个数据库实例,持久保存数据并为其提供查询接口(SQL),供不同客户端调用。

    mysql-client 是操作数据库实例的工具,允许连接到MySQL服务器使用该查询接口。它将为您提供MySQL命令行程序。

    如果只需要连接到远程服务器并运行查询,只安装mysql-client就可以了。如果是服务器只提供连接服务的只需要安装mysql-server。

3、配置

  • 3.1、查看MySQL服务器是否运行

    sudo service mysql status
    

    出现以下结果,则说明已运行:

    * /usr/bin/mysqladmin  Ver 8.0.36-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))
    Copyright (c) 2000, 2024, Oracle and/or its affiliates.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Server version          8.0.36-0ubuntu0.20.04.1
    Protocol version        10
    Connection              Localhost via UNIX socket
    UNIX socket             /var/run/mysqld/mysqld.sock
    Uptime:                 12 min 3 sec
    
    Threads: 2  Questions: 12  Slow queries: 0  Opens: 120  Flush tables: 3  Open tables: 39  Queries per second avg: 0.016
    

    否则,需要按第二步开启MySQL。

  • 3.2、开启MySQL服务器

    • 3.2.1、开启服务器
    sudo service mysql start
    

    结果如下:

    * Starting MySQL database server mysqld
    * su: warning: cannot change directory to /nonexistent: No such file or directory
    

    我这边出现了一个警告su: warning: cannot change directory to /nonexistent: No such file or directory,下面解决这个警告。

    • 3.2.2、解决su: warning: cannot change directory to /nonexistent: No such file or directory警告问题。
    # 1、停止服务器
    sudo service mysql stop
    
    # 2、设置目录权限
    sudo usermod -d /var/lib/mysql/ mysql
    
    # 3、再次开启服务器
    sudo service mysql start
    

    经过此步后,MYSQL就可以正常启动和停止了。

  • 3.3、运行MySQL初始化安全脚本

    sudo mysql_secure_installation
    

    将要求您配置VALIDATE PASSWORD COMPONENT用来测试MySQL用户密码强度并提高安全性:

    Securing the MySQL server deployment.
    
    Connecting to MySQL using a blank password.
    
    VALIDATE PASSWORD COMPONENT can be used to test passwords
    and improve security. It checks the strength of password
    and allows the users to set only those passwords which are
    secure enough. Would you like to setup VALIDATE PASSWORD component?
    
    Press y|Y for Yes, any other key for No: y
    

    输入y后,密码验证策略分为三个级别:低,中和强。这里输入2,选择强。

    There are three levels of password validation policy:
    
    LOW    Length >= 8
    MEDIUM Length >= 8, numeric, mixed case, and special characters
    STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file
    
    Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
    

    在下一个提示符下,和其他的教程也不一样。这里提示跳过了root密码的设置,因为默认使用的auth_socket。
    如果你想设置MySQL root用户的密码,你可以在登录后使用ALTER_USER命令进行修改。

    Skipping password set for root as authentication with auth_socket is used by default.
    If you would like to use password authentication instead, this can be done with the "ALTER_USER" command.
    

    跟着会提示是否移除匿名用户名,我选择y

    See https://dev.mysql.com/doc/refman/8.0/en/alter-user.html#alter-user-password-management for more information.
    
    By default, a MySQL installation has an anonymous user,
    allowing anyone to log into MySQL without having to have
    a user account created for them. This is intended only for
    testing, and to make the installation go a bit smoother.
    You should remove them before moving into a production
    environment.
    
    Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
    Success.
    

    接下来设置是否禁止root远程登录:

    Normally, root should only be allowed to connect from
    'localhost'. This ensures that someone cannot guess at
    the root password from the network.
    
    Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
    Success.
    

    设置是否移除test数据库:

    By default, MySQL comes with a database named 'test' that
    anyone can access. This is also intended only for testing,
    and should be removed before moving into a production
    environment.
    
    
    Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
     - Dropping test database...
    Success.
    

    是否重新加载权限使其生效:

    Reloading the privilege tables will ensure that all changes
    made so far will take effect immediately.
    
    Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
    Success.
    
    All done!
    

4、MySQL数据库基本使用常用命令

  • 4.1、启动MySQL数据库服务

    sudo service mysql start
    # 或
    sudo systemctl start mysql.service
    
  • 4.2、重启MySQL数据库服务

    sudo service mysql restart
    # 或
    sudo systemctl restart mysql.service
    
  • 4.3、停止MySQL数据库服务

    sudo service mysql stop
    # 或
    sudo systemctl stop mysql.service
    
  • 4.4、查看MySQL运行状态

    sudo service mysql status
    # 或
    sudo systemctl status mysql.service
    
  • 4.5、设置MySQL服务开机自启动

    sudo service mysql enable
    # 或
    sudo systemctl enable mysql.service
    
  • 4.6、停止MySQL服务开机自启动

    sudo service mysql disable
    # 或
    sudo systemctl disable mysql.service
    
  • 4.7、配置MySQL远程登录
    有时候,为了开发方便,我们需要使用本地电脑远程访问和管理MySQL数据库。默认情况下,为了安全MySQL只允许本地登录,如果要开启远程连接,则需要修改MySQL的配置文件:

    sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
    

    bind-address = 127.0.0.1这一行改为bind-address = 0.0.0.0即可,或简单一点注释掉也行。
    修改完成保存后,需要重启MySQL服务才会生效

  • 4.8、systemctl和service的区别
    Linux 服务管理两种方式service和systemctl,以前都用service命令管理mysql,现在liunx系统升级了,又有了新的更好的方法管理系统进程,现在使用systemctl命令管理mysql。

    service是一个脚本命令,分析service可知是去/etc/init.d目录下执行相关程序。service和chkconfig结合使用。service配置文件存放目录/etc/init.d/

    Systemd是一个系统管理守护进程、工具和库的集合,是Linux系统最新的初始化系统(init),作用是提高系统的启动速度,尽可能启动较少的进程,尽可能更多进程并发启动。
    Systemd对应的进程管理命令是systemctl,主要负责控制Systemd系统和服务管理器。同时兼容service命令。

    在Linux生态系统中,Systemd被部署到了大多数的标准Linux发行版中,只有为数不多的几个发行版尚未部署。Systemd通常是所有其它守护进程的父进程,但并非总是如此。

5、MySQL创建用户与授权

  • 5.1、以root身份登录
    要从命令行与MySQL服务器进行交互,请使用MySQL客户端程序,该程序作为MySQL服务器软件包的依赖项安装的。
    在MySQL 8.0上,auth_socket默认情况下,root用户通过插件进行身份验证。该auth_socket插件对localhost通过Unix套接字文件从进行连接的用户进行身份验证。这意味着您不能通过提供密码来以root用户身份进行身份验证。

    以root用户身份登录到MySQL服务器,请输入:

    sudo mysql
    

    将为您提供MySQL Shell,如下所示:

    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 12
    Server version: 8.0.36-0ubuntu0.20.04.1 (Ubuntu)
    
    Copyright (c) 2000, 2024, Oracle and/or its affiliates.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql>
    

    如果要使用外部程序(例如phpMyAdmin)以root用户身份登录到MySQL服务器,则有两个选择:

    • 1、将身份验证方法从auth_socket改为mysql_native_password:
    mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'very_strong_password';
    mysql> FLUSH PRIVILEGES;
    
    • 2、创建一个新的专用管理用户,该用户可以访问所有数据库:
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' IDENTIFIED BY '123456';
    

    注:上述中@前的是用户名,'very_strong_password’是设置的对应用户的密码。

  • 5.2、使用root用户登录

    mysql -u root -p
    
  • 5.3、创建用户

    mysql> CREATE USER 'username'@'host' IDENTIFIED BY 'password';
    
    • username:你将创建的用户名。
    • host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%。
    • password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器

    注意,使用%通配符创建外网访问用户后,登录时需要明确访问的IP地址,例如:

    mysql -u test -h 115.28.203.224 -p
    

    例子:

    mysql> CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456';
    mysql> CREATE USER 'pig'@'192.168.1.101' IDENDIFIED BY '123456';
    mysql> CREATE USER 'pig'@'%' IDENTIFIED BY '123456';
    mysql> CREATE USER 'pig'@'%' IDENTIFIED BY '';
    mysql> CREATE USER 'pig'@'%';
    
  • 5.4、用户授权

    mysql> GRANT privileges ON databasename.tablename TO 'username'@'host';
    
    • privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所有的权限则使用ALL;
    • databasename:数据库名;
    • tablename:表名;

    如果要授予该用户对所有数据库和表的相应操作权限则可用表示,如.*
    注意:用以上命令授权的用户不能给其它用户授权,如果想让被授权的用户可以将他的拥有的权限授给其他用户,用以下命令:

    mysql> GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;
    
  • 5.5、刷新授权

    mysql> flush privileges;
    

    这一步一定要做,不然无法成功!这句表示从mysql数据库的grant表中重新加载权限数据,因为MySQL把权限都放在了cache中,所以在做完更改后需要重新加载。
    例子:

    mysql> GRANT SELECT, INSERT privileges ON test.user TO 'pig'@'%';
    mysql> GRANT ALL privileges ON *.* TO 'pig'@'%';
    mysql> GRANT ALL privileges ON maindataplus.* TO 'pig'@'%';
    
  • 5.6、设置与更改用户密码

    • 5.6.1、MySQL查看密码策略
      使用 show variables like ‘validate_password%’; 查看当前数据库密码策略;
      validate_password_policy | STRONG | 显示当前本机密码策略为高策略;
    mysql> show variables like 'validate_password%';
    
    • 5.6.2、MySQL设置密码策略
    # 设置密码长度为6
    mysql> set global validate_password_length=6;
    # 设置密码中的数字长度为6
    mysql> set global validate_password.number_count=6;
    # 设置密码中特殊字符个数为0
    mysql> set global validate_password.special_char_count=0;
    
    • 5.6.3、修改用户密码
    mysql> ALTER USER 'username'@'host' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;  
    
  • 5.7、撤销用户权限

    mysql> REVOKE privileges ON databasename.tablename FROM 'username'@'host';
    
    • privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL;
    • databasename:数据库名;
    • tablename:表名;

    如果要授予该用户对所有数据库和表的相应操作权限则可用表示,如.*
    例子:

    mysql> REVOKE SELECT privileges ON *.* FROM 'pig'@'%';
    
  • 5.8、删除用户

    mysql> DROP USER 'username'@'host';
    
  • 5.9、查看用户信息

    • 5.9.1、切换mysql数据库
    mysql> use mysql;
    
    • 5.9.2、查询用户表
    mysql> SELECT User, Host FROM user;
    
    • 5.9.3、查看用户权限
    mysql> show grants for 'username'@'host';
    
    • 5.9.4、查看加密的规则
    mysql> select Host,User,plugin from mysql.user;
    
    • 5.9.5、修改加密方式
    mysql> ALTER USER 'username'@'host' IDENTIFIED WITH mysql_native_password BY 'password';
    
    • mysql_native_password:加密方式;
    • password:用户密码;

6、创建与删除数据库

  • 6.1、创建数据库
    登录root用户后,使用 create 命令创建数据库,语法如下:
    mysql> CREATE DATABASE 数据库名;
    
  • 6.2、删除数据库
    mysql> DROP DATABASE 数据库名称;
    

7、MySQL查看信息

使用MySQL时,需要了解当前数据库的情况,例如当前的数据库大小、字符集、用户等等。下面总结了一些查看数据库相关信息的命令。

  • 7.1、查看显示所有数据库
    mysql> show databases;
    
  • 7.2、查看当前使用的数据库
    mysql> select database();
    
  • 7.3、查看数据库使用端口
    mysql> show variables like 'port';
    
  • 7.4、查看数据库的表信息
    mysql> show tables;
    
  • 7.5、查看表结构
    mysql> show columns from table_name; 
    # 或
    mysql> describe table_name;
    
    显示表结构,字段类型,主键,是否为空等属性,但不显示外键。
  • 7.6、查看表生成的DDL
    DDL(data definition language)数据库定义语言:其实就是我们在创建表的时候用到的一些sql,比如说:CREATE、ALTER、DROP等。DDL主要是用在定义或改变表的结构,数据类型,表之间的链接和约束等初始化。
    mysql> show create table table_name;
    
    该命令把创建表的DDL,表结构、类型,外键,备注等全部显示出来。
  • 7.7、查询所有数据的大小
    mysql> select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables;
    
  • 7.8、查看指定数据库的大小
    mysql> select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables where table_schema='数据库名称';
    
  • 7.9、查看指定数据库的某个表的大小
    mysql> select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables where table_schema='数据库名称' and table_name='表名称';
    
  • 7.10、查看索引所占的空间大小
    mysql> select concat(round(sum(index_length/1024/1024),2),'MB') as data from tables where table_schema='mysql';
    
  • 7.11、查看数据文件存放路径
    mysql> show variables like '%datadir%';
    
  • 7.12、查看数据库编码
    mysql> show variables like 'character%';
    
    如下:
    +--------------------------+----------------------------+
    | Variable_name            | Value                      |
    +--------------------------+----------------------------+
    | character_set_client     | utf8mb4                    |
    | character_set_connection | utf8mb4                    |
    | character_set_database   | utf8mb3                    |
    | character_set_filesystem | binary                     |
    | character_set_results    | utf8mb4                    |
    | character_set_server     | utf8mb4                    |
    | character_set_system     | utf8mb3                    |
    | character_sets_dir       | /usr/share/mysql/charsets/ |
    +--------------------------+----------------------------+
    
    • character_set_client 为客户端编码方式;
    • character_set_connection 为建立连接使用的编码;
    • character_set_database 为数据库的编码;
    • character_set_results 为结果集的编码;
    • character_set_server 为数据库服务器的编码;
  • 7.13、查看数据库的最大连接数
    mysql> show variables like '%max_connections%';
    
  • 7.14、查看数据库当前连接数,并发数
    mysql> show status like 'Threads%';
    
    如下:
    +-------------------+-------+
    | Variable_name     | Value |
    +-------------------+-------+
    | Threads_cached    | 0     |
    | Threads_connected | 27    |
    | Threads_created   | 48    |
    | Threads_running   | 1     |
    +-------------------+-------+
    4 rows in set (0.00 sec)
    
    • Threads_cached 代表当前此时此刻线程缓存中有多少空闲线程。
    • Threads_connected 代表当前已建立连接的数量,因为一个连接就需要一个线程,所以也可以看成当前被使用的线程数。
    • Threads_created 代表从最近一次服务启动,已创建线程的数量。
    • Threads_running 代表当前激活的(非睡眠状态)线程数。并不是代表正在使用的线程数,有时候连接已建立,但是连接处于sleep状态,这里相对应的线程也是sleep状态。

8、整理:mysql快速安装和卸载

  • 8.1、安装
    # 安装
    sudo apt install mysql-server
    
    # 查看启动状态
    systemctl status mysql
    
  • 8.2、使用自带用户名和密码登录
    # 查看自带的用户名和密码
    sudo cat /etc/mysql/debian.cnf
    
    # 找到其中的user和password,并使用此用户和密码登录
    mysql -u debian-sys-maint -p xxxxx
    
  • 8.3、修改root密码
    # 查看user表
    use mysql
    select user,plugin from user;
    
    # 修改密码格式
    update user set plugin='mysql_native_password' where user='root';
    
    # 刷新
    flush privileges;
    
    # 修改root密码
    alter user 'root'@'localhost' identified by '123456';
    
    # 刷新
    flush privileges;
    
    # 退出
    exit
    
  • 8.4、root用户登录
    mysql -u root -p
    
  • 8.5、卸载
    systemctl disable mysql
    systemctl stop mysql
    sudo apt remove mysql-server
    sudo apt remove --purge mysql-server mysql-client mysql-common
    sudo apt autoremove
    

9、整理:mysql快速使用

  • 9.1、登录MySQL服务器:
    mysql -u username -p
    
    这里username是你的MySQL用户名,运行后会提示输入密码。
  • 9.2、查看所有数据库:
    show databases;
    
  • 9.3、选择一个数据库并查看所有表:
    use database_name;
    show tables;
    
  • 9.4、查看表结构:
    describe table_name;
    # 或者
    show columns from table_name;
    
  • 9.5、查询表中的数据:
    select * from table_name;
    
  • 9.6、删除数据库:
    drop database database_name;
    
  • 9.7、删除表:
    drop table table_name;
    
  • 9.8、删除表中的内容:
    delete from table_name;
    
  • 18
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Ubuntu 20.04上安装MySQL,可以按照以下步骤进行: 1. 打开终端,输入以下命令更新软件包列表: ``` sudo apt update ``` 2. 安装MySQL服务器和客户端: ``` sudo apt install mysql-server mysql-client ``` 3. 安装过程中会提示输入MySQL root用户的密码,输入并确认即可。 4. 安装完成后,可以使用以下命令启动MySQL服务: ``` sudo systemctl start mysql ``` 5. 可以使用以下命令检查MySQL服务是否已经启动: ``` sudo systemctl status mysql ``` 6. 如果需要开机自启动MySQL服务,可以使用以下命令: ``` sudo systemctl enable mysql ``` 7. 如果需要修改MySQL root用户的密码,可以使用以下命令: ``` sudo mysql_secure_installation ``` 该命令会提示输入当前root用户的密码,然后会进行一系列安全设置,包括修改root用户密码、删除匿名用户、禁止root用户远程登录等。 以上就是在Ubuntu 20.04上安装MySQL的步骤。 ### 回答2: Ubuntu20.04是目前广泛使用的Linux操作系统版本之一,MySQL是一个流行的关系型数据库管理系统。在这里我将详细介绍Ubuntu20.04上如何安装MySQL数据库。 1.首先,我们需要使用命令行界面打开终端窗口,在此窗口中输入以下命令,以确保您的Ubuntu20.04已更新到最新版本。 sudo apt update sudo apt upgrade 2.下一步,我们需要在Ubuntu20.04上安装MySQL服务器。输入以下命令: sudo apt install mysql-server 3. 安装完毕后,您将需要启动MySQL服务并在开机时自动启动该服务。您可以通过输入以下命令以手动启动它: sudo systemctl start mysql 为了在开机时自动启动MySQL服务,您需要运行以下命令: sudo systemctl enable mysql 4.在MySQL服务启动后,您需要通过输入以下命令来增强MySQL的安全性: sudo mysql_secure_installation 5.执行此命令后,您将被提示输入root用户的密码,接着按照命令行提示的每一步来加固MySQL的安全。例如,您可以选择是否禁用root用户的远程登录以及是否删除测试数据库等。 6. 最后,您可以通过以下命令来测试您的MySQL是否已成功安装: sudo systemctl status mysql 如果一切正常,您将看到MySQL的运行状态。 在Ubuntu20.04上安装MySQL数据库是一个简单而快捷的过程。当您完成这些步骤之后,您将可以在您的系统中使用MySQL来存储和管理数据,而且所有的数据都将得到很好地保护。 ### 回答3: Ubuntu 20.04是一款较新的操作系统,MySQL又是一款非常实用的数据库,那么如何在Ubuntu 20.04上安装MySQL呢?接下来就是具体的步骤: 第一步:首先我们需要打开终端,通过以下命令可以安装MySQL: sudo apt update sudo apt install mysql-server 第二步:安装完后,我们需要检查MySQL是否在后台运行,我们可以使用以下命令来检查: sudo systemctl status mysql 如果MySQL正在运行,那么屏幕上会有一条绿色的信息提示,如果未运行则运行以下命令启动它: sudo systemctl start mysql 第三步:接着,我们需要安装一个安全性质的脚本,以确保MySQL服务器的安全性: sudo mysql_secure_installation 按照要求设置root安全口令,并删除测试数据库和匿名用户。 第四步:现在我们已经成功地安装MySQL,接下来就是登录MySQL: sudo mysql -u root -p 输入刚才设置的root安全口令,成功后就可以进入MySQL中了。 第五步:如果想使用MySQL的图形界面客户端工具,可以安装MySQL Workbench: sudo apt install mysql-workbench 最后,输入以下命令退出MySQL: exit 总结:以上就是在Ubuntu 20.04中安装MySQL的步骤,简单明了,如果您有使用MySQL的需求,那么安装MySQL就是必要的,希望您能够成功安装并使用MySQL

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值