在Ubuntu Server 13上安装和配置MySQL 5

时间:2020-01-09 10:40:53  来源:igfitidea点击:

说明

MySQL是最流行的数据库服务器之一,它是免费的。快速安装小型网站也很简单,除了免费之外,这是许多人使用它的另一个原因。

安装和配置MySQL服务器

  • 安装MySQL服务器
sudo apt-get install mysql-server
  • 出现提示时,设置Root的密码。
  • 运行安全安装脚本来设置Root的密码,禁用Root的远程登录,删除匿名用户帐户以及删除测试数据库。
sudo mysql_secure_installation
  • 当系统提示我们更改Root的密码时,输入" n"。
  • 接受所有剩余的默认值。

创建数据库管理员帐户

数据库服务器的每个管理员都应拥有自己的帐户。而且,他们仅应具有对其管理的数据库所需的特权。没人可以将Root帐户用于日常活动。

我们正在为管理员创建一个超级用户帐户。与Root一样,此帐户不应用于日常数据库查询和其他常见任务。应该用来维护服务器。

  • 使用其Root帐户登录MySQL请勿将此与Ubuntu的Root帐户混淆。
mysql -u root -p
-u型
登录MySQL的用户名
向MySQL发出提示输入密码的信号,如果用户有密码(他们应该这样做!)。如果用户有密码,而我们不使用此选项,则登录将失败
  • 为数据库服务器的管理员创建一个用户帐户。
CREATE USER 'jsmith'@'localhost' IDENTIFIED BY 'enter-complex-password';
  • 授予该帐户的管理特权。
GRANT ALL ON *.* TO 'jsmith'@'localhost' WITH GRANT OPTION;
  • 刷新当前特权表以加载更新,向jsmith授予我们刚刚分配的特权。
FLUSH PRIVILEGES;
  • 注销MySQL。
quit

重命名MySQL的root帐户

  • 使用管理员帐户登录到MySQL。请记住,请勿使用Root。
mysql -u jsmith -p
  • 更改root的登录名。
RENAME USER 'root'@'localhost' TO 'new_root_name'@'localhost';
  • 刷新特权表以应用我们的更改。
FLUSH PRIVILEGES;

创建一个新的数据库

我们将为Web应用程序创建一个示例数据库。稍后,当我们开始为应用程序数据库管理员和应用程序服务帐户创建帐户时,将需要使用此功能。本教程的范围仅涵盖为应用程序选择最佳数据库引擎,也不包括如何优化所选的数据库引擎。

  • 使用MySQL Admin帐户登录到MySQL。
mysql -u jsmith -p
  • 使用默认设置创建一个新的数据库。
CREATE DATABASE myapp;

创建数据库用户帐户

我们将为新数据库创建一个管理员帐户。该帐户仅需要对数据库及其表的特权。它对MySQL服务器应该没有任何作用,例如创建用户帐户或者授予他们权限。

  • 创建用户帐户。
CREATE USER 'jdoe'@'localhost' IDENTIFIED BY 'enter-complex-password';
  • 我们刚刚为本地服务器创建了一个用户帐户。根据环境,我们可能不希望这样做。例如,要允许用户仅使用MySQL客户端从其桌面访问,请创建用户,使其仅具有从那里登录的权限。我们将使用桌面的完全限定域名。但是,我们也可以使用IP地址。
CREATE USER 'jdoe'@'jdoes-desktop.theitroad.test' IDENTIFIED BY 'enter-complex-password";
  • 向该帐户授予适当的权限。
GRANT SELECT,INSERT,UPDATE,DELETE,INDEX,CREATE,ALTER,DROP ON myapp.* TO 'jdoe'@'localhost';
  • 刷新特权表以应用我们的新特权。
FLUSH PRIVILEGES;

有关特权的完整列表,请参见MySQL文档。

创建一个应用程序服务帐户

每个应用程序都应该有自己的帐户才能连接到数据库。遵循最低特权原则,该帐户只能访问其需要使用的数据库和表。还应该仅将其限制为数据库和表所需的权限。

这些帐户应始终具有极其复杂的密码。一个好的做法是使用一个例如32个字符长的字母,数字和特殊字符的随机字符。还应该混合使用大写和小写。

  • 为应用程序创建一个服务帐户。应用程序在本地服务器上
CREATE USER 'myapp_srv'@'localhost' IDENTIFIED BY 'super-complex-password-here';

应用程序在单独的服务器上(推荐)

CREATE USER 'myapp_srv'@'appserver01.theitroad.test' IDENTIFIED BY 'super-complex-password-here';
  • 授予服务帐户对应用程序数据库的适当权限。
GRANT SELECT,INSERT,UPDATE,DELETE ON myapp.* TO 'myapp_srv'@'localhost';
  • 刷新特权表以应用我们的新权限。
FLUSH PRIVILEGES;