【Ubuntu】mysql 5.7 server与client安装

# 备份之前的源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.old

# 修改sources.list文件
sudo vim /etc/apt/sources.list

# 清华镜像源,注销掉之前的所有镜像源
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse

# 更新镜像源
sudo apt-get update

# 更新软件
sudo apt-get upgrade

采用 apt-get install 方式安装

# 执行下面安装命令
apt update && apt install -y libtinfo5 --allow-remove-essential

#安装mysql5.7所需要的依赖
sudo apt-get install mysql-client-core-5.7

# 安装mysql5.7客户端
sudo apt-get install mysql-client-5.7

# 安装mysql5.7服务端(过程中可能需要设置root密码)
sudo apt-get install mysql-server-5.7

相关操作

#查看MySQL端口:
sudo netstat -anp | grep mysql

#查看MySQL服务状态:
sudo service mysql status

#启动MySQL服务:
sudo service mysql start

#停止MySQL服务:
sudo service mysql stop

#重启MySQL服务:
sudo service mysql restart

远程连接授权

#h后为IP地址,-u 用户名 -P 端口
mysql -h 192.168.30.114 -u root -P 3306 -p 
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your password' WITH GRANT OPTION;  #进入数据库中才执行这个SQL

修改配置文件

#进入 vi /etc/mysql/mysql.conf.d/mysqld.cnf ,在里面找到
bind-address = 0.0.0.0
#重启MySQL服务:
sudo service mysql restart

检测开通端口(默认3306)

ufw status
#设置默认状态,默认禁止所有连接(所有入站连接)
ufw default deny
#启用某个端口
ufw allow 3306

修改mysql的默认端口

#进入配置文件的路径
/etc/mysql/mysql.conf.d
vim mysqld.cnf
port  = 3308   #由3306改为3308

安装完成后查看mysql版本和服务

# 查看mysql版本
mysql -V 
# 查看mysql服务
netstat -tap | grep mysql 

未设置或忘了密码解决办法

# 停止mysql服务
sudo service mysql stop
 
# 修改MySQL的登录设置,暂时不校验登陆密码
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
 
# 将[mysqld]下的“skip-external-locking”注释掉
# 添加 “skip-grant-tables” 然后保存退出
例如:
================================================
[mysqld]
user  = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket  = /var/run/mysqld/mysqld.sock
port  = 3306
basedir  = /usr
datadir  = /var/lib/mysql
tmpdir  = /tmp
lc-messages-dir = /usr/share/mysql
#skip-external-locking
skip-grant-tables
=================================================
 
# 重启mysql数据库
sudo service mysql restart
 
# 免密登陆mysql数据库
mysql -u root mysql
 
# 修改root密码
update mysql.user set authentication_string=password('111222333') where user='root';
 
# 刷新生效
flush privileges;
 
# 还原MySQL的登录设置
# 将[mysqld]下添加的“skip-grant-tables” 删除
# 将“skip-external-locking”的注释放开然后保存退出
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
例如:
================================================
[mysqld]
user  = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket  = /var/run/mysqld/mysqld.sock
port  = 3306
basedir  = /usr
datadir  = /var/lib/mysql
tmpdir  = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
=================================================
 
# 重启mysql数据库
sudo service mysql restart
 
# 使用新密码登陆mysql
mysql -u用户名 -p密码 数据库名
# 例如: 
mysql -uroot -p111222333 mysql

登陆mysql查看信息

# 直接登陆mysql
mysql -u用户名 -p密码 数据库名
# 例如: 
mysql -uroot -p111222333 mysql
 
# 先登陆后面再输入密码和选择数据库
mysql -u root -p
Enter password: “root用户密码”
mysql> use mysql # 选择要操作的数据库
 
# 切换数据库
use 数据库名;
 
# 查看所有数据库
show databases; 
 
# 查看登陆数据库中所有的表
show tables; 
 
# 查看数据表结构
desc 表名;
 
# 查看登陆用户名 
select user(); 
 
# 查看登陆数据库库名
select database();
 
# 查看版本
select version();
 
# 显示当前时间
select now();
 
# 查看所有用户的 用户名、可登陆主机、身份验证插件、密码 
select user,host,plugin,authentication_string from user;
 
# 查看当前登录用户权限
show grants;
 
# 查看任意用户权限(后面说权限的具体含义)
show grants for root@localhost;

创建及删除数据库和用户

# 使用root用户登录数据库
mysql -uroot -p111222333 mysql
 
# 创建数据库
create database "数据库名" charset="数据库编码";
# 例如:
create database pydb charset=utf8;
 
# 创建数据库用户
create user "用户名"@"IP地址" identified by "密码";
# 例如:
create user 'test0'@'localhost' identified by 'test0111';
 
# 删除数据
drop database [数据库名];
# 例如:
drop database pydb;
 
# 删除数据库用户
drop user '用户名'@'ip地址';
# 例如:
drop user 'test0'@'localhost';

给用户赋权限

# 查看用户test0的权限
show grants for test0@localhost;
 
显示:[GRANT USAGE ON *.* TO 'test0'@'localhost']
USAGE: 表示无权限用户。
 
# 用test0用户登录pydb数据库
mysql -utest0 -ptest0111 pydb
 
报错提示无权操作:[ERROR 1044 (42000): Access denied for user 'test0'@'localhost' to database 'pydb']
 
# 使用root用户给test0用户赋权
grant all privileges on '数据库名'.'表名' to '用户名'@'IP地址' identified by "密码" with grant option;
 
# 例如设置本地客户端访问此用户:
mysql> grant all privileges on pydb.* to 'test0'@'localhost' identified by 'test0111' with grant option;
 
# 设置远程任意客户端访问此用户:
mysql> grant all privileges on pydb.* to 'test0'@'%' with grant option;
 
# 刷新权限
mysql> flush privileges;
 
# 查看本地权限
show grants for 'test0'@'localhost';
回显:[GRANT ALL PRIVILEGES ON `pydb`.* TO 'test0'@'localhost' WITH GRANT OPTION]
 
# 查看远程权限
show grants for 'test0'@'%';
回显:[GRANT ALL PRIVILEGES ON `pydb`.* TO 'test0'@'%' WITH GRANT OPTION]
权限都添加成功了,现在本地客户端和远程客户端都拥有了登陆test0用户操作pydb数据库下的所有表的权限了。
 
# 赋权命令解释
grant: 赋权关键字
all privileges: 赋权类型,all privileges表示所有权限。也可以赋值具体的权限如:select、update、create、drop等。
on: 表示权限要赋给哪个数据库的哪个表,*.* 表示所有数据库的所有表。
to: 表示权限要赋给哪个用户,格式:”用户名”@”登录IP或域名”。localhost表示本机客户端可登录此用户, %表示任何主机客户端都可以登录此用户,如果配的是具体ip例如'用户名'@'192.168.113',表示只允许192.168.113这个主机客户端登录此用户。 也可以配置IP段例如'用户名'@'192.168.%'
identified by: 设置此用户的登录密码,也可以不设置。
with grant option: 表示允许此用户将自己的权限授权给其它用户。
注意: grant添加的权限是自动叠加的,比如第一次添加了select权限后面再添加insert权限,那么此用户就拥有select和insert权限。如果此用户已经拥有所有权限,再添加select权限则此用户还是拥有all privileges所有权限。
 
# 移除权限
revoke insert on '数据库名'.'表名' from '用户名'@'IP地址';
# 例如移除insert权限:
revoke insert on pydb.* from 'test0'@'localhost';
 
# 例如所有权限:
revoke all on pydb.* from 'test0'@'localhost';
 
# 刷新权限
mysql> flush privileges;

 连接中出现报错

#报错一
root@op05:/etc/mysql/mysql.conf.d# mysql -h192.168.30.117 -uroot -p 
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'172.17.0.1' (using password: YES)
#或其他报错

解决方法:请注意修改端口、修改 bind-address = 0.0.0.0

 

 

 
posted @ 2022-05-11 11:58  Syw_文  阅读(672)  评论(0编辑  收藏  举报