Ubuntu下安装MySQL

1 篇文章 0 订阅
1 篇文章 0 订阅

MYSQL是一个广泛使用的开源的关系型数据库。当你需要一个数据库,但不清楚用哪个时,MYSQL是不错的选择。

这篇文章介绍了Ubuntu操作系统下的MYSQL服务器安装。如果要在你的应用中使用MYSQL,你可能需要安装其他扩展包。详情请查看你的应用程序提供的文档。

MySQL安装

通过Ubuntu操作系统包管理器安装MySQL

sudo apt-get update
sudo apt-get install mysql-server

现在MySQL及其依赖已经安装成功。

如果安全配置向导在安装完成后没有自动启动,请输入以下命令:

sudo mysql_secure_installation utility

这个向导会提示你设置mysql密码、取消root用户的远程操作权限等安全相关选项。

允许远程访问

如果你启用了iptables,并且想通过远程机器访问MySQL数据库,则需要在服务器防火墙启用相应端口(MySQL默认端口是3306)。如果只在当前机器上使用MySQL,则不需要执行这步。

译者注:
请谨慎操作,启用防火墙后,如果ssh端口没有在防火墙允许范围内,将无法通过ssh远程登录。

允许远程访问mysql服务器:

sudo ufw enable
sudo ufw allow mysql

启用MySQL服务

安装完成后,可以通过以下命令来启动数据库服务。如果该服务已启动,则会显示一条消息,通知您该服务已在运行:

sudo systemctl start mysql

开机启动

以下命令确保数据库服务可以在开机时启用:

sudo systemctl enable mysql

配置可远程访问的接口

MySQL默认不再绑定(或监听)任何可远程访问的接口。在/etc/mysql/mysql.conf.d/mysqld.cnf中编辑“ bind-address”指令:

vim /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address		= 127.0.0.1 ( 默认 )
bind-address		= XXX.XXX.XXX.XXX ( The ip address of your Public Net interface. )
bind-address		= ZZZ.ZZZ.ZZZ.ZZZ ( The ip address of your Service Net interface. )
bind-address		= 0.0.0.0 ( 所有IP地址)

重启mysql服务:

sudo systemctl restart mysql

启动mysql shell

使用mysql有很多种方法,本文主要介绍最基本也是兼容性最好的方法:mysql shell

  1. 在命令提示符处,运行以下命令以启动mysql shell并以root用户身份登录:
    bin/mysql -u root -p
    
  1. 提示输入密码时,请输入在安装mysql时设置的密码,如果没有设置,直接按下回车。

    应显示以下mysql shell提示:

    mysql>
    

设置root用户密码

如果你刚才登录时用的空白密码,或者你想更改之前设置的root密码,则可以创建或修改密码。

  1. MySQL 5.7以前的版本,更改密码:

    UPDATE mysql.user SET Password = PASSWORD('password') WHERE User = 'root';
    

    MySQL 5.7及以后的版本,更改密码:

    UPDATE mysql.user SET authentication_string = PASSWORD('password') WHERE User = 'root';
    
  1. 重新加载保存的用户信息以使更改生效:
    FLUSH PRIVILEGES;
    

注意: 我们的SQL命令是全部大写的。如果你输入小写命令,也可以。按照惯例,命令使用大写形式,使其与字段名或数据区分开。

如果将来你需要重置root密码,查看这个教程

查看用户

MySQL将用户信息存储在其自己的数据库中。 该数据库的名称是mysql。 在该数据库内,用户信息位于user表中。 如果要查看在MySQL用户表中设置了哪些用户,请运行以下命令:

SELECT User, Host, authentication_string FROM mysql.user;

这条语句的每一部分的说明如下:

  • SELECT 告诉MySQL你在请求数据。
  • User, Host, authentication_string 告诉MySQL你想找哪些字段。字段是指数据在表中的类别。这里,你在查询用户名,用户名所对应的主机和加密的密码条目。
  • FROM mysql.user 告诉MySQL从mysql的数据库的user表中取得数据。
  • 分号(; ) 结束命令

注意: 所有的SQL查询都以分号结尾。如果结尾没有分号,MySQL不会处理查询。

用户主机

以下示例是上述查询的输出

SELECT User, Host, authentication_string FROM mysql.user;
+------------------+-----------+-------------------------------------------+
| User             | Host      | authentication_string                     |
+------------------+-----------+-------------------------------------------+
| root             | localhost | *756FEC25AC0E1823C9838EE1A9A6730A20ACDA21 |
| mysql.session    | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys        | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| debian-sys-maint | localhost | *27E7CA2445405AB10C656AFD0F86AF76CCC57692 |
+------------------+-----------+-------------------------------------------+

用户与他们登录时的主机关联。在此示例中,root用户是为localhost定义的,即为localhost的IP地址和服务器的主机名所用。通常,您只需要为一台主机(通常与之连接的主机)设置一个用户。

如果您要在运行MySQL的服务器上运行应用程序,则默认情况下,它所连接的主机是localhost。 您创建的任何新用户的host字段中都必须具有localhost

如果您的应用程序是远程连接的,则MySQL查找的主机条目是远程计算机的IP地址或DNS主机名(来自客户端的主机名)。

匿名用户

在示例输出中,一个条目具有主机值,但没有用户名或密码。那是一个匿名用户。当客户端未指定用户名进行连接时,它将尝试以匿名用户身份进行连接。

通常,您不希望有任何匿名用户,但是某些MySQL安装默认包含一个。如果看到一个,则应该删除该用户(请使用带引号的用户名,例如“”),或为其设置密码。

创建数据库

数据库服务器(database server)和数据库(database)之间存在差异,即使这些术语通常可以互换使用。 MySQL是数据库服务器,这意味着它可以跟踪数据库并控制对它们的访问。 数据库存储数据,它是应用程序与MySQL交互时试图访问的数据库。

一些应用程序会在安装过程中创建数据库,而其他一些则需要您自己创建数据库并告知应用程序。

要创建数据库,登录到mysql shell并运行以下命令,将demodb替换为要创建的数据库的名称:

CREATE DATABASE demodb;

创建数据库后,您可以通过查询所有数据库来验证是否创建成功。以下是示例查询语句和查询结果:

SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| demodb             |
| mysql              |
+--------------------+
3 rows in set (0.00 sec)

添加数据库用户

当应用程序使用root用户连接到数据库时,它们通常具有超出所需权限的特权。 您可以为应用程序连接到新数据库添加用户。 在以下示例中,创建了一个名为demouser的用户。

  1. 要创建新用户,请在mysql shell中运行以下命令:
INSERT INTO mysql.user (User,Host,authentication_string,ssl_cipher,x509_issuer,x509_subject)
VALUES('demouser','localhost',PASSWORD('demopassword'),'','','');
  1. 当您对mysql数据库中的用户表进行更改时,请通过刷新权限来使MySQL读取更改,如下所示:
FLUSH PRIVILEGES;
  1. 通过再次运行SELECT查询来验证是否已创建用户:
SELECT User, Host, authentication_string FROM mysql.user;

+------------------+-----------+-------------------------------------------+
| User             | Host      | Password                                  |
+------------------+-----------+-------------------------------------------+
| root             | localhost | *756FEC25AC0E1823C9838EE1A9A6730A20ACDA21 |
| mysql.session    | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys        | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| debian-sys-maint | localhost | *27E7CA2445405AB10C656AFD0F86AF76CCC57692 |
| demouser         | localhost | *0756A562377EDF6ED3AC45A00B356AAE6D3C6BB6 |
+------------------+-----------+-------------------------------------------+

数据库用户授权

创建新用户后,它没有任何权限。 用户可以登录,但不能进行任何数据库更改。

  1. 通过运行以下命令,为用户授予新数据库的完全权限:
GRANT ALL PRIVILEGES ON demodb.* to demouser@localhost;
  1. 通过运行以下命令刷新授权以使更改正式生效:
FLUSH PRIVILEGES;
  1. 要验证是否设置了那些授权,请运行以下命令:
SHOW GRANTS FOR 'demouser'@'localhost';
2 rows in set (0.00 sec)

如果您要重建服务器,MySQL将返回重现该用户权限所需的命令。 *.*上的语法表示默认情况下,用户对任何内容均无授权。 该命令被第二个命令覆盖,这是您为新数据库运行的授权。

+-----------------------------------------------------------------------------------------------------------------+
| Grants for demouser@localhost                                                                                   |
+-----------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'demouser'@'localhost' IDENTIFIED BY PASSWORD '*0756A562377EDF6ED3AC45A00B356AAE6D3C6BB6' |
| GRANT ALL PRIVILEGES ON `demodb`.* TO 'demouser'@'localhost'                                                    |
+-----------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

总结

如果您只是创建数据库和用户,那么就完成了。 此处介绍的概念应为您提供一个扎实的起点,以供您学习更多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值