环境搭建
1. 安装 mysql
- 请切换 root 用户 或获取root权限后操作
1.1. 下载安装
apt-get update # 更新资源索引 下载慢的话需要换软件源
apt-get install mysql-server # 安装 mysql
1.2. 安全配置
mysql_secure_installation
- 目前尝试失败 老是访问被拒绝 之后再看 (原来是一路瞎安 初始未设置mysql密码 见后文解决办法)
当有一个可以登录的 root 用户后 尝试成功!!!
直接根据提示 选择 Yes or No 就完成了安全配置
1.3. 检查服务状态
systemctl status mysql.service
1.4. 配置远程访问
sudo mysql -uroot -p
GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY "123456"; # 增加 root 用户 只能从 localhost 登录 密码为123456 可以登录任何库
CREATE DATABASE ubuntudb; # 新建一个数据库
GRANT ALL PRIVILEGES ON ubuntudb.* TO snado@"%" IDENTIFIED BY "654321"; # 增加 snado 用户 从任意 ip 登录 密码为 654321 只能访问 ubuntudb 库
# user@ip ip 为 % 代表任意ip登录
1.5. 在 mysql 8.X 版本里改变了用法 (如果mysql是 8.x版本 很多东西都不一样 以后去百度)
#创建账户 (貌似自带root用户 再创建会失败)
create user root@localhost identified by 'root';
#赋予权限,with grant option这个选项表示该用户可以将自己拥有的权限授权给别人
grant all privileges on *.* to root@localhost with grant option;
#改密码&授权超用户,flush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里
flush privileges;
1.6. 开始安装 没有设mysql 的 root 密码
1.6.1. 用默认用户密码登录数据库
用文本编辑器打开这个文件
/etc/mysql/debian.cnf

用文件中的 user 和 password 登录 mysql
mysql -udebian-sys-maint -p13BuRsvPnmzrVsnR
1.6.2. 设置 root 密码
use mysql; # 切换数据库
update mysql.user set authentication_string=password('root') where user='root'; # 修改本地root用户密码
update user set plugin="mysql_native_password"; # 不知道是要干嘛
flush privileges; # 刷新权限
quit;
1.6.3. 重启数据库
service mysql restart
mysql -uroot -proot
2. mysql命令
2.1. mysql 服务操作 (linux系统知识)
service mysql status # 查看 mysql 状态
service mysql stop # 停止 mysql 服务
service mysql start # 启动 mysql 服务
2.2. 远程登录
mysql -h192.168.5.131 -usnado -p
2.3. mysql 目录结构
数据与文件对应关系
数据库 --> 一个文件夹
表 --> 一个文件
3. 有一个大坑
# Mysql只能本地登录,无法远程登录
netstat -apn |grep 3306
# 如果输出结果包括tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN -时,说明监听的host为127.0.0.1,只能本地访问,需要设置监听host:
# 需要修改监听的host
sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf
# 注释掉bind-address = 127.0.0.1, 即#bind-address = 127.0.0.1
# 或改为
bind-address = 0.0.0.0
# 重启服务
sudo /etc/init.d/mysql restart
# 查看端口状态
netstat -apn |grep 3306
#此时应为:tcp6 0 0 :::3306 :::* LISTEN -
3.1. mysql 8 改了加密方式 navicat连接不上
- 解决方案
USE mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mypassword';
FLUSH PRIVILEGES;
浙公网安备 33010602011771号