在Ubuntu22.04上安装MySQL-Server,并配置可视化界面SQL-Workbench

发布时间 2023-10-11 16:02:46作者: JOJO-Young

在Ubuntu22.04上安装MySQL-Server,并配置可视化界面MySQL-Workbench

彻底删除MySQL

若您是首次,在Ubuntu22.04上崭新安装mysql,可以略过该步。

首先卸载mysql-common:

sudo apt-get remove mysql-common

然后卸载已经安装的mysql-server:

sudo apt-get autoremove --purge mysql-server

之后,使用以下命令查看mysql剩下的依赖,并卸载:

dpkg --list|grep mysql

 最后,清理残留数据:

dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P 

在Ubuntu22.04上崭新安装MySQL-Server

Installing MySQL

首先更新软件库,并安装mysql-server:

sudo apt update
sudo apt install mysql-server

然后使用以下命令确保数据库服务器在运行:

sudo systemctl start mysql.service

上述命令将安装并开始运行MySQL,但不会提示您设置密码或进行其他配置的更改。在接下来的部分,我们将致力于解决这个问题。

Configuring MySQL

对于MySQL的新安装,您需要运行数据库管理系统附带的安全脚本。这个脚本提供给使用者更改某些不太安全的默认配置的选项,比如不允许远程root登录和删除示例用户。

但是若在此时直接运行安全脚本,可能出现错误。因为该脚本将尝试为安装者的根用户MySQL账户设置密码,然而Ubuntu上默认的安装配置的身份验证方式,无需密码即可连接服务器。

因此在使用该安全脚本之前,我们学要执行以下步骤调整根MySQL用户的身份验证方式,保证不会出现上述错误。

sudo mysql
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password(此处填自己设的密码)';
mysql> exit

上述步骤将根用户的身份验证方法更改为使用密码的方法。

后使用sudo运行SQL安装脚本:

sudo mysql_secure_installation

该脚本将带您完成一系列提示,以此您可以在其中对MySQL的安全选项做出一些更改。

注意,第一个提示将询问您是否设置验证密码插件,该插件可用于测试新MySQL用户的密码强度,并给出相应建议,建议安装(即选y)。如果您选择使用验证密码插件,则您创建的任何MySQL用户都将需要使用密码进行身份验证,以拥有满足您选择的策略的密码。(这是被推荐的,因为这将有利于SQL-workbench的使用)

之后,您可以按y,然后按ENTER接受所有后续问题的默认设置。这将删除一些匿名用户和测试数据库,禁用远程根登录,并加载这些新规则,以便MySQL立即更新您所做的更改。(当然如果想要远程访问数据库,远程根登陆也可以开放,但是数据库的安全性将有所降低)。

不建议的行为:

一旦安全脚本配置完成,您的MySQL将得到保护。现在,您可以使用MySQL客户端创建一个专用的数据库用户。

Creating a Dedicated MySQL User and Granting Privileges

以使用密码登陆MySQL为例:

mysql -u root -p你的密码
eg:
mysql -u root -p******

在看见MySQL提示符,就可以使用CREATE USER语句创建一个新用户。它们遵循以下通用语法:

mysql> CREATE USER 'username'@'host' IDENTIFIED WITH authentication_plugin BY 'password';

在CREATE USER之后,您可以指定用户名。紧接着是一个@符号,然后是该用户要连接的主机名。如果您只计划从Ubuntu服务器本地访问该用户,则可以指定localhost。将用户名和主机都用单引号括起来并不总是必要的,但这样做有助于防止错误。  

在选择用户的身份验证插件时,您有几个选项。前面提到的auth_socket插件非常方便,因为它提供了强大的安全性,而不需要有效用户输入密码即可访问数据库。但它也阻止了远程连接,当外部程序需要与MySQL交互时,远程连接会使事情变得复杂。

作为替代方案,您可以完全省略语法中的WITH authentication_plugin部分,让用户使用MySQL的默认插件caching_sha2_password进行身份验证。MySQL文档建议那些想要使用密码登录的用户使用此插件,因此以下例创建新用户sammy:(先别急)

mysql> CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';

某些版本的PHP,会在caching_sha2_password上产生问题。如果您计划将此数据库与PHP应用程序(例如phpMyAdmin)一起使用,您可能需要创建一个用户,该用户将使用较旧但仍然安全的mysql_native_password插件进行身份验证:

mysql> CREATE USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
//or alter(更改)
mysql> ALTER USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

创建新用户后,您可以授予他们适当的权限。授予用户权限的一般语法如下:

mysql> GRANT PRIVILEGE ON database.table TO 'username'@'host';

此示例语法中,定义了允许用户在指定的数据库和表上执行的操作。您可以通过用逗号分隔每个命令,向同一用户授予同一用户的多个特权。您还可以通过输入星号(*)代替数据库和表名来授予全局权限。在SQL中,星号是用于表示“所有”数据库或表格的特殊字符。示例如下:

mysql> GRANT CREATE, ALTER, DROP, INSERT, UPDATE, INDEX, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'sammy'@'localhost' WITH GRANT OPTION;

请注意,此语句还包括WITH GRANT OPTION。这将允许您的MySQL用户将其拥有的任何权限授予系统上的其他用户。

 接下来使用如下命令更新缓存并退出MySQL:

mysql> FLUSH PRIVILEGES;
mysql> exit

在将来,使用以下命令(以sammy为例)以一个新MySQL user的身份登陆:

mysql -u sammy -p

注意:

Testing MySQL

不管你是如何安装的,MySQL都应该已经开始自动运行了。要对此进行测试,检查其状态:

systemctl status mysql.service

输出应与下图类似:

配置可视化界面MySQL-Workbench

进入网站https://dev.mysql.com/downloads/repo/apt/,click Download,在弹出的界面click “No thanks, just start my download.”。

下载好.deb安装包后,使用如下命令进行安装:

sudo dpkg -i mysql-apt-config_0.8.26-1_all.deb 

等待安装完成。

后键入以下命令安装MySQL-Workbench:

sudo apt update
sudo apt install mysql-workbench-community

在默认的界面中即可看到本地的SQL Server,使用root账号登陆即可。