- 笔记/
Ubuntu系统安装MySQL教程
Table of Contents
安装 #
- 命令安装
sudo apt install mysql-server
- 安装完成后验证
sudo systemctl status mysql
如果安装成功如下显示:
mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2020-04-28 20:59:52 UTC; 10min ago
Main PID: 8617 (mysqld)
Status: "Server is operational"
用户密码设置 #
安装完成后开始无法通过==mysql -u root -p==登录到服务器,可以将身份验证方法从auth_socket
更改为mysql_native_password
1.通过sudo mysql连接到mysql服务器
sudo mysql
2.运行==ALTER USER SQL==语句使root用户使用密码进行身份验证
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
FLUSH PRIVILEGES;
3.设置完成后使用==mysql -u root -p== 登录;连接成功即可
数据库用户权限 #
- 创建数据库
CREATE DATABASE IF NOT EXISTS database_name;
- 显示数据库列表
SHOW DATABASES;
- 创建mysql用户账户
CREATE USER IF NOT EXISTS 'database_user'@'localhost' IDENTIFIED BY 'user_password';
在上面的命令中,我们将主机名部分设置为localhost
,这意味着该用户将只能从本地主机(即从运行MySQL Server的系统)连接到MySQL服务器。如果您想授予其他主机的访问权限,只需使用远程计算机IP更改localhost
或对主机部分使用'%'
通配符,这意味着该用户帐户将能够从任何主机进行连接。
- 修改账户密码
SET PASSWORD FOR 'database_user'@'localhost' = PASSWORD('new_password');
- 查询所有用户
SELECT user , host FROM mysql.user;
- 删除用户
DROP USER 'database_user@'localhost';
- 用户权限赋予
1.要授予特定数据库上用户帐户的所有特权,请使用以下命令:
GRANT ALL PRIVILEGES ON database_name.* TO 'database_user'@'localhost';
2.要授予用户帐户对所有数据库的所有特权,请使用以下命令:
GRANT ALL PRIVILEGES ON *.* TO 'database_user'@'localhost';
3.要通过数据库从特定表授予用户帐户所有特权,请使用以下命令:
GRANT ALL PRIVILEGES ON database_name.table_name TO 'database_user'@'localhost';
4.如果只想授予特定数据库类型的用户帐户特定特权,则:
GRANT SELECT, INSERT, DELETE ON database_name.* TO database_user@'localhost';
5.撤销权限
REVOKE ALL PRIVILEGES ON database_name.* TO 'database_user'@'localhost';
6.查询用户权限
SHOW GRANTS FOR 'database_user'@'localhost';
配置远程连接 #
如果要通过公共网络连接到MySQL服务器,请将MySQL服务器设置为监听计算机上的所有IP地址。
需要编辑MySQL配置文件并添加或更改bind-address
选项的值。您可以设置一个IP地址和IP范围。
在Ubuntu和Debian中,文件位于/etc/mysql/mysql.conf.d/mysqld.cnf
,而在基于Red Hat的发行版(如CentOS)中,文件位于/etc/my.cnf
。
如果地址为0.0.0.0
,则MySQL服务器接受所有远程主机IPv4接口上的连接。如果你需要使用IPv6,请使用::
代替0.0.0.0
。
完成后,重新启动MySQL服务以使更改生效。
sudo systemctl restart mysql
授予远程访问权限
GRANT ALL ON database_name.* TO user_name@'ip_address' IDENTIFIED BY 'user_password';
其中database_name
是用户将连接到的数据库的名称。user_name
是MySQL用户的名称。
ip_address
是用户本地计算机的IP地址。使用%
允许用户从任何IP地址进行连接。user_password
是用户密码。
例如,仅允许IP是10.8.0.5
的客户端使用密码my_passwd
和用户名为foo
访问数据库dbname
,请运行以下命令,如需允许所有IP,请使用%
代替IP地址。
GRANT ALL ON dbname.* TO foo@'10.8.0.5' IDENTIFIED BY 'my_passwd';
Navicat建议使用ssh隧道,参考https://www.myfreax.com/mysql-ssh-tunnel/