Ubuntu22.04安装Mysql(在线&离线)
1、(在线)安装MySQL
(1)更新软件包列表
sudo apt-get update
(2)查看可使用的MySQL安装包(该步骤可忽略)
sudo apt-get search mysql-server
(3)安装MySQL
如果不加
-y
会在安装过程中,系统将提示你设置MySQL的root密码。确保密码足够强,且记住它,因为你将在以后需要用到它。
sudo apt-get install -y mysql-server
若使用指定版本
sudo apt-get install -y mysql-server-8.0
(4)启动MySQL服务
sudo systemctl start mysql
(5)设置开机自启动
sudo systemctl enable mysql
(6)检查MySQL是否在运行
sudo systemctl status mysql
2、(离线)安装MySQL
(1)获取安装包并解压安装
安装包下载地址:https://dev.mysql.com/downloads/mysql/8.0.html,选择对应的ubuntu系统版本,下载到本地或者使用我们的安装包
在指定路径下新建一个mysql文件夹,进入该路径上传tar安装包
mkdir /home/ubuntu/mysql
cd /home/ubuntu/mysql
上传至服务器后解压,根据需要移动至待安装的文件夹
tar -xvf mysql-server_8.0.39-1ubuntu22.04_amd64.deb-bundle.tar
mv /home/ubuntu/mysql/ /usr/local/
# 若安装在/usr/local/mysql目录下需要设置目录权限
cd /usr/local/mysql
sudo chown -R mysql:mysql .
(2)安装依赖
可以提前上传安装时使用的libiao1和libmecab2,该文档使用的是x86_64架构,使用以下指令可以查看架构和系统版本
uname -a
lsb_release -a
libaio1和libmecab2对应选择合适的系统版本(在镜像链接上按下shift再点击即可下载)
https://packages.ubuntu.com/jammy/libaio1/
https://packages.ubuntu.com/jammy/libmecab2
上传至
mysql
文件夹下后执行以下指令
sudo dpkg -i libaio1_0.3.112-13build1_amd64.deb
sudo dpkg -i libmecab2_0.996-14build9_amd64.deb
下面需要按照顺序依次执行语句安装依赖包
# 安装通用依赖包
sudo dpkg -i mysql-common_8.0.39-1ubuntu22.04_amd64.deb
# 安装客户端相关包
sudo dpkg -i mysql-community-client-core_8.0.39-1ubuntu22.04_amd64.deb
sudo dpkg -i mysql-community-client_8.0.39-1ubuntu22.04_amd64.deb
sudo dpkg -i mysql-community-client-plugins_8.0.39-1ubuntu22.04_amd64.deb
sudo dpkg -i libmysqlclient21_8.0.39-1ubuntu22.04_amd64.deb
sudo dpkg -i mysql-client_8.0.39-1ubuntu22.04_amd64.deb
# 安装开发包
sudo dpkg -i libmysqlclient-dev_8.0.39-1ubuntu22.04_amd64.deb
# 安装服务器相关包
sudo dpkg -i mysql-community-server-core_8.0.39-1ubuntu22.04_amd64.deb
sudo dpkg -i mysql-community-server_8.0.39-1ubuntu22.04_amd64.deb
sudo dpkg -i mysql-server_8.0.39-1ubuntu22.04_amd64.deb
# 安装调试包(可忽略)
sudo dpkg -i mysql-community-server-debug_8.0.39-1ubuntu22.04_amd64.deb
sudo dpkg -i mysql-community-test-debug_8.0.39-1ubuntu22.04_amd64.deb
# 安装测试包(可忽略)
sudo dpkg -i mysql-community-test_8.0.39-1ubuntu22.04_amd64.deb
sudo dpkg -i mysql-testsuite_8.0.39-1ubuntu22.04_amd64.deb
(3)启动MySQL并进行初始化配置
sudo systemctl start mysql
检查Mysql是否启动
sudo systemctl status mysql
sudo mysql_secure_installation
脚本会提示你执行以下操作:
- 设置 root 密码:根据提示设置 MySQL root 用户的密码。
- 删除匿名用户:建议选择
Yes
,以删除默认的匿名用户。 - 禁止 root 远程登录:建议选择
Yes
,以提高安全性。 - 删除测试数据库:选择
Yes
删除默认的测试数据库。 - 重新加载权限表:选择
Yes
以使更改立即生效
(4)设置开机自启动
sudo systemctl enable mysql
(5)登录MySQL
使用设置的密码登录
mysql -u root -p
3、配置MySQL
(1)运行MySQL安全脚本进行一些基本的安全配置(在线安装使用,离线安装已执行过可参考)
输入指令自动运行MySQL安全脚本
sudo mysql_secure_installation
按照提示进行一步步配置
- 提示
Enter password for user root:
是要求输入 MySQL 数据库的root
用户的密码,若安装 MySQL 时没有为root
用户设置密码,可以直接按Enter
键跳过这个步骤;如果你在 MySQL 安装过程中或之前已经为root
用户设置了密码,你需要在此输入该密码。如果输入错误,将无法继续配置。 - 提示
Would you like to setup VALIDATE PASSWORD component?Press y|Y for Yes, any other key for No: Y
选择Y
来设置VALIDATE PASSWORD
组件时,MySQL 将启用密码验证插件,以确保在创建或修改用户密码时,密码符合一定的复杂性要求。 - 提示
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:
要求你为 MySQLroot
用户设置密码强度策略,不同的选项对应不同的密码复杂性要求,这里选择2,设置为最高强度级别。接着会评估当前密码的安全性,并提示是否需要修改。 - 提示
Remove anonymous users? (Press y|Y for Yes, any other key for No) :
询问是否需要移除匿名用户,为了安全性,通常选择y
- 提示
Disallow root login remotely? (Press y|Y for Yes, any other key for No) :
这是在询问你是否要禁止root
用户通过远程连接登录 MySQL 服务器,为了方便管理,我们选择n - 提示
Remove test database and access to it? (Press y|Y for Yes, any other key for No) :
这是在询问你是否要删除 MySQL 默认创建的test
数据库以及对该数据库的访问权限,可以选择y - 提示
Reload privilege tables now? (Press y|Y for Yes, any other key for No) :
这是在询问你是否要立即重新加载 MySQL 的权限表,选择y
(2)查看MySQL是否允许用户远程连接(不允许远程连接的用户可忽略)
sudo grep 'bind-address' /etc/mysql/mysql.conf.d/mysqld.cnf
离线安装用户若没有可根据需要自己添加(也可以用能够联网的电脑上的navicat输入离线服务器的ip地址,测试root用户或者sn_1386能否连接,需要打开防火墙端口)
bind-address = 0.0.0.0
mysqlx-bind-address = 127.0.0.1
如果
bind-address
被设置为
0.0.0.0
或一个特定的 IP 地址,MySQL 将允许从这些远程地址进行连接。如果它被设置为
127.0.0.1
,则 MySQL 只允许本地连接。若没有设置允许用户远程连接,可以进入vim模式进行修改:
vim /etc/mysql/mysql.conf.d/mysqld.cnf
(3)查看防火墙设置(云服务器管理平台也需要打开对应端口)
MySQL使用的端口默认是3306
sudo ufw allow 3306
(4)检查MySQL的端口监听情况
sudo netstat -tulnp | grep mysql
若MySQL 正在监听
0.0.0.0:3306
或其他外部 IP 地址,那么它就允许远程连接。
(5)检查Mysql用户的主机权限
MySQL 用户的权限表中有一列
Host
,该列决定了特定用户可以从哪些主机连接。可以使用以下 SQL 命令在 MySQL 中检查某个用户的主机权限:
sudo mysql -u root -p
SELECT User, Host FROM mysql.user WHERE User='root';
用户root只允许从localhost连接
(6)登录MySQL
sudo mysql -u root -p
(7)创建navi_cloud数据库
CREATE DATABASE my_database;
(8)创建新用户并赋予权限(牢记,需要在yml配置中使用)
CREATE USER '用户名'@'%' IDENTIFIED BY '密码';
GRANT ALL PRIVILEGES ON my_database.* TO '用户名'@'%';
FLUSH PRIVILEGES;
%是指允许用户从任何 IP 地址访问数据库,适合在需要远程访问的场景中使用。如果设置的用户仅需要从某些特定的 IP 地址访问数据库,建议用具体的 IP 地址代替 %
(9)验证数据库和用户
SHOW DATABASES;
版权归原作者 听话丶 所有, 如有侵权,请联系我们删除。