个人文档
  • AI编程Cursor
  • GPT使用笔记
  • npm常用库合集
  • 同步用
  • 小Demo们
  • 工具网站教程集合
  • HTML、CSS 工具方法集合
    • HTML 全局属性
    • css常用功能
    • font-face 字体|子集相关
    • iframe父子页面传值
    • input输入优化
    • loading状态
    • nodejs使用谷歌邮箱发邮件
    • 为 Dom 自定义事件监听
    • 初始html的head标签配置
    • 拼音输入中文汉字的事件监听
    • 文字颜色效果
    • 文档片段范围 Range
    • 移动端开发-rem
    • 等宽字体推荐
    • 网站SEO优化注意点
    • 邮件html模板
  • JS 工具方法集合
    • Axios 简单使用
    • Axios 简单封装
    • Gitbook的安装和使用
    • Github 登录开发
    • HTML转为纯文本
    • JS 中强大的操作符
    • cookie 操作
    • js 动态加载js资源
    • js 常用功能语句
    • js取代trycatch的方法封装
    • js接口下载二进制
    • script 标签的异步属性
    • 判断当前是移动端还是pc端
    • 刷新token队列管理
    • 前端多线程 Web Worker
    • 加密-AES对称加密
    • 加密-node进行rsa加密解密
    • 地区省市区三级联动的地址数据 + 功能
    • 复制插件
    • 开发时环境变量
    • 得到随机图片
    • 数字格式整理集合
    • 数学计算插件
    • 时间格式整理
    • 获取ip地址
    • 获取url传参
    • 进制转换和位运算符
    • 页面隐藏|激活|关闭的监听
  • JS 知识点研究
    • Babel 历史和原理
    • Babel 配置和使用
    • Function 的 apply、call、bind
    • HTTP浏览器缓存粗解
    • Source map 文件还原为源码
    • TS常用技巧
    • js 的加载和模块化
    • js 的新数据类型 Symbol
    • js的代理对象 proxy 和 defineProperty
    • js的原型链 prototype
    • vite 打包体积优化
    • webpack 可视化打包文件大小插件
    • webpack 基础使用配置
    • webpack 版本5的报错
    • yeoman 开发脚手架的工具
    • 同步异步和微任务宏任务
    • 移动端调试---谷歌工具+eruda+vconsole
    • 转换-Blob URL
    • 转换-FileReader
    • 转换-Js文件类型和转换
    • 转换-前端开发的URL的编码和解码
    • 转换-字符串和Base 64的转换
  • Node 和 Npm 相关
    • Node 开发环境配置
    • express + jwt 校验
    • node 常用方法
    • node后台服务器-PM2
    • node基本使用
    • npm 中依赖的版本问题
    • npm 功能使用
    • npm指令说明和其他对比
    • nvm版本管理+自动切换node版本
  • React 学习
    • React Hook
    • React 项目基础开发
    • React.memo 和 React.PureComponent
    • React懒加载进阶
    • useContext Hook
    • useEffect Hook
    • useMemo 和 useCallback - Hook
    • useRef Hook
    • useState Hook
    • 同步修改变量功能封装 useVal for react
    • 轻便的传值组件
  • Rust 语言相关
    • Rust 基本
    • Rust 基础学习
    • Rust 调用 Object-C 的API
    • Tauri 基本使用
    • Tauri 是什么
  • VUE 学习
    • Vue3 使用
    • Vue3使用hook
    • Vue开发小技术点
    • vue路由切换时的动画效果
    • 花式引入组件和资源-打包时拆包减少js体积
  • Web3相关
    • Web3.0开发上-准备和概念理解
    • Web3.0开发下-功能代码示例
    • 以太坊区块链和Web3.0
    • 开发智能合约
  • python
    • pyenv版本管理工具
    • python初始化
    • python基本概念
    • venv虚拟环境
  • 个人其他
    • Steam Deck的基本设置和插件
  • 其他编程相关
    • Git教程和常用命令
    • Java开发-JDK和Maven的安装和卸载
    • Jenkins安装和基本使用
    • Linux系统指令
    • Mac 使用2K屏幕开启缩放
    • Mac 使用VS code打开项目
    • Mac 安装 Homebrew
    • Mac 的终端 shell 与 zsh
    • Mac 软件和插件
    • MacBook使用建议
    • Mac升降级到指定版本的系统
    • Mac安装Zsh
    • Mac安装软件各种提示
    • Mac系统脚本语言 AppleScript 的使用
    • Mac终端代理工具
    • Markdown(md)文档开发-Typora
    • Mysql 的安装和使用
    • Nginx 安装和基础使用
    • Nginx 稍微高深的配置
    • Slate - Api 的文档开发工具
    • Sublime配置
    • Ubuntu的 apt-get 使用
    • VScode配置
    • Windows 软件和插件
    • curl 工具使用
    • github 网站访问优化
    • host 文件
    • inquirer 终端中和用户交互
    • uTools的插件开发教程
    • vim 文本编辑功能
    • 使用 Github Pages 免费部署网站
    • 压缩指令 zip 和 unzip
    • 油猴的安装和开发(Tampermonkey)
    • 阿里云简略使用
  • 微信开发
    • 微信小程序开发
    • 微信开发必读
    • 微信开发提前购买域名
    • 微信手机打开的页面中授权登录
    • 微信扫码登录
    • 微信服务号登录+推送服务提醒
    • 自定义分享卡片-node.js实现
  • 数据结构与算法
    • KMP算法
    • Wildcard字符串分析算法
    • 二叉树
    • 字典树
    • 时间复杂度浅析
    • 算法神器——动态规划
Powered by GitBook
On this page
  • Mysql 的安装和使用
  • 安装和卸载
  • 刚安装完成的初始化
  • 基本使用
  • 常用指令

Was this helpful?

  1. 其他编程相关

Mysql 的安装和使用

title: Mysql 的安装和使用 id: 992dad0a199d9fb62ccabb8c5c22217c tags: [] date: 2000/01/01 00:00:00 updated: 2023/03/04 19:29:12 isPublic: true --#|[分隔]|#--

Mysql 的安装和使用

常用命令

查看所有指令: service mysql | /etc/init.d/mysql 启动: service mysql start | /etc/init.d/mysql start 关闭: service mysql stop | /etc/init.d/mysql stop 重启: service mysql restart | /etc/init.d/mysql restart

安装和卸载

Linux 的 CentOS

使用 apt-get

apt-get install mysql-server

Mac 安装

下载对应mySql,下载官方mySql

我现在的电脑是Mac,所以可以下载以下两个版本:

  • macOS 10.15 (x86, 64-bit), DMG Archive(dmg可视化窗口安装文件)

  • macOS 10.15 (x86, 64-bit), Compressed TAR Archive(指令安装)

Mac 卸载

Mac电脑安装数据库后,是可以在系统偏好设置窗口最下面,看到mySql标识的。

先停止所有mysql有关进程,然后依次执行下面的指令:

sudo rm /usr/local/mysql
sudo rm -rf /usr/local/mysql*
sudo rm -rf /Library/StartupItems/MySQLCOM
sudo rm -rf /Library/PreferencePanes/My*

vim /etc/hostconfig  # 打开之后,修改 removed the line MYSQLCOM=-YES-

rm -rf ~/Library/PreferencePanes/My*
sudo rm -rf /Library/Receipts/mysql*
sudo rm -rf /Library/Receipts/MySQL*
sudo rm -rf /var/db/receipts/com.mysql.*

执行完毕后,系统偏好设置窗口的mySql标识消失,可以重新安装其他mySql了。

刚安装完成的初始化

Ubuntu系统使用apt-get安装的mysql,没有提示让用户设置账户名和密码,而是提供了一个默认的账户名和密码,这里我们需要自己去查看、登录并创建新用户。

# 查看默认用户名和密码
cat /etc/mysql/debian.cnf

# 输出以下
# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host     = localhost
user     = debian-sys-maint
password = 7Vz2AGk0rl1Hpbdk
socket   = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host     = localhost
user     = debian-sys-maint
password = 7Vz2AGk0rl1Hpbdk
socket   = /var/run/mysqld/mysqld.sock

所以,在我的机器上:

  • 默认用户:debian-sys-maint

  • 默认密码:7Vz2AGk0rl1Hpbdk

登录默认账户

# 登录进mysql:mysql -u账户名 -p密码
mysql -udebian-sys-maint -p7Vz2AGk0rl1Hpbdk

# 查看当前用户
SELECT User, Host, plugin FROM mysql.user;

# 展示当前所有的现有的数据库名字
show databases;

# 输出
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

# 声明要操作 mysql 这个库
use mysql;

# 给root用户设置密码
update user set authentication_string=PASSWORD("自定义密码") where user = "root";

# 设置用户的 plugin
update user set plugin="mysql_native_password";

# 更新
flush privileges;

使用quit;退出mysql,再登陆就可以新用户名新的密码了。

基本使用

使用Navicat连接数据库

使用Navicat正常的新建连接,填写了关键的主机、端口、用户名(数据库的用户名)、密码(数据库的密码)后,进行连接测试。

可能出现的弹框报错一:

2003 - Can't connect to MySQL server on '39.96.68.33' (61 "Connection refused")

原因一:mysql未启动。

直接此教程顶部的启动命令启动就可以了。

原因二:服务的防火墙的原因,我们需要开发3306这个mysql默认使用的端口,让外部能访问。

我这里使用的是阿里云ECS,过程如下:

  • 登录阿里云ECS控制台

  • 点击左上角,展开侧边栏菜单,选择云服务ECS

  • 菜单栏中选择【网络与安全】 - 【安全组】

  • 右侧会展示你的的安全组列表,基本就是你和你的ECS服务器对应

  • 找到mysql的那个服务器所对应的那一条安全组,点击其最右侧的【配置规则】

  • 打开的新页面,会展示这个安全组所配置一些允许通行的端口号和描述

  • 如果配置的通行端口号中有3306,那就不是防火墙的问题了,到此为止,否则继续

  • 选择列表上面的快速添加,出现弹框,直接弹框中的多选中的【MySQL(3306)】勾上,点击确定即可。

# 输出查看3306端口是否开放
netstat -an|grep 3306

# 输出以下类似的打印,说明已开放成功了
tcp6       0      0 :::3306                 :::*                    LISTEN     
tcp6       0      0 172.17.222.56:3306      221.222.30.146:62792    TIME_WAIT  

原因三:mysql配置原因,只允许本地或某个ip访问

# 输出查看3306端口信息,能看到端口的访问限制
netstat -an|grep 3306

# 输出以下,说明限制只允许 127.0.0.1 访问
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN   

需要先修改mysql配置:

# 使用 apt 安装的mysql,是下面这个配置文件,其他的安装方式需要自己找对应配置文件
vim /etc/mysql/mysql.conf.d/mysqld.cnf

# 从文件中找到一下代码:
...
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address          = 127.0.0.1
...

# 把 bind-address = 127.0.0.1 这一行注释掉,然后 输入:wq 回车,来保存并退出

然后进入mysql中,执行以下指令:

# 对远程用户进行授权
grant all privileges on *.* to 'root'@'%' identified by 'mysqlma';

# 退出mysql
eqit;

# 退出到系统命令行,输入一下命令,重启一下mysql
service mysql restart

操作完成后,就可以再次连接来测试了。

可能出现的弹框报错二:

1130 - Host '221.222.30.146' is not allowed to connect to this MySQL server

这是因为Navicat使用的mysql账户,并没有开放远程访问权限,需要去服务开启权限:

# 登录mysql
mysql -uroot -p123456

# 允许使用root账户远程登录mysql
update mysql.user set host = '%' where user ='root' limit 1;

# 更新配置
flush privileges;

# 退出登录
quit;

# 重启mysql
service mysql restart

完成。

执行.sql文件

如果.sql文件的指令集合中,包含 use {数据库名} 的指令,可能会导致执行到指令的其他数据库中。

方法一: 一行指令执行

# mysql -u{账户} -p{密码} -D{执行到的数据库名} < {导出到带路径的文件名}
# 比如
mysql -udebian-sys-maint -p7Vz2AGk0rl1Hpbdk -Ddoctest < ~/doctest.sql 

方法二: 先使用指令登录到 mysql 中,然后:

# 切换到需要执行 sql 文件的数据库
use account_table;

# 执行 .sql 文件
source ~/account_table.sql

# 正常情况,完成

执行.sql文件时报错

在使用 Navicat,或者直接使用指令使用 .sql 文件时,可能会报错。

使用 Navicat 时报的错不明所以,但使用指令时报错如下:

ERROR 1231 (42000): Variable ‘time_zone’ can’t be set to the value of ‘NULL’
ERROR 1231 (42000): Variable ‘sql_mode’ can’t be set to the value of ‘NULL’
ERROR 1231 (42000): Variable ‘foreign_key_checks’ can’t be set to the value of ‘NULL’
ERROR 1231 (42000): Variable ‘unique_checks’ can’t be set to the value of ‘NULL’
ERROR 1231 (42000): Variable ‘character_set_client’ can’t be set to the value of ‘NULL’
Query OK, 0 rows affected (0.00 sec)

原因是 mysql 配置中的最大允许数据包 max_allowed_packet 的值过小,此值默认为16M,最大为1G。

临时修改方案: 使用指令进入到 mysql 程序中,执行 set global max_allowed_packet = 200M; 来修改,但重启 mysql 后,此值会恢复。

永久解决方案: 去修改 mysql 的配置文件并重启 mysql 即可。

可以使用以下指令来查找 mysql 的配置文件位置:

mysql --help | grep my.cnf

筛选出来的文件,可能还会引入其他位置的配置文件,我的配置文件最终文件为 /etc/mysql/mysql.conf.d/mysqld.cnf,修改里面的 max_allowed_packet 这一项的值。

保存文件后重启 mysql,再执行 sql 文件就不会报错了。

常用指令

# 登录进mysql:mysql -u{账户名} -p{密码},比如:
mysql -udebian-sys-maint -p7Vz2AGk0rl1Hpbdk

# 退出登录
quit;

# 查看mysql使用的时区
show variables like '%time_zone%';

# 查看 mysql 系统时间
select now();

# 设置时区,更改为东八区
set global time_zone = '+8:00';

# 导出数据库到文件,格式和样例如下
# mysqldump -u{用户名} -p{密码} {库名} > {导出到带路径的文件名}
mysqldump -uroot -p123456 doctest > ~/doctest.sql

# 更新配置
flush privileges;
PreviousMarkdown(md)文档开发-TyporaNextNginx 安装和基础使用

Last updated 3 months ago

Was this helpful?