首页 > 数据库 >安装MySQL

安装MySQL

时间:2024-11-19 15:29:54浏览次数:1  
标签:容器 log root MySQL mnt mysql 安装

  1. 前提:安装docker服务并配置私有库,镜像加速地址
  2. 云服务器或者本地服务器开放MySQL端口3306
  3. 登录私有库,参考登录私有库步骤
  4. 拉取MySQL镜像
#拉取私有库MySQL镜像
docker pull 8.134.59.62:8083/mysql
●8.134.59.62:8083/mysql 为私有库镜像地址:私有库IP:端口号/镜像名
#查看已拉取下来的MySQL镜像
docker images
●该命令查看本地所有的镜像,可以用grep进行过滤

 

          5. 创建挂载目录及配置文件

#新建MySQL配置文件目录
mkdir -p /mnt/mysql/conf
●-p:所有不存在的上级目录会被自动创建

#添加配置文件my.cnf到目录/mnt/mysql/conf
#新建MySQL数据存放目录
mkdir -p /mnt/mysql/data
#新建MySQL日志目录
mkdir -p /mnt/mysql/log
#新建MySQL数据导入和导出目录
mkdir -p /mnt/mysql/mysql-files

 

           6. 授权目录

#对MySQL数据存放目录进行授权
chmod -R  755 /mnt/mysql/data
●-R:对目录及子目录或文件进行授权
#对MySQL日志目录进行授权
chmod -R  755 /mnt/mysql/log
#对MySQL数据导入和导出目录进行授权
chmod -R  755 /mnt/mysql/mysql-files
#对配置文件目录进行授权
chmod -R  755 /mnt/mysql/conf

说明:以下是MySQL通用的配置文件内容

#MySQL通用的配置文件内容
[mysqld]
#Mysql服务的唯一编号 每个mysql服务Id需唯一
server-id=1
#服务端口号 默认3306
port=3306
#mysql安装根目录(default /usr)
#basedir=/usr/local/mysql
#mysql数据文件所在位置
datadir=/mnt/mysql/data
#pid
pid-file=/mnt/mysql/data/mysqld.pid
#设置socke文件所在目录
socket=/mnt/mysql/data/mysql.sock
#设置临时目录
#tmpdir=/tmp
# 用户
user=mysql
# 允许访问的IP网段,全部网段
bind-address=0.0.0.0
# 跳过密码登录
#skip-grant-tables
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
#主要用于MyISAM存储引擎,如果多台服务器连接一个数据库则建议注释下面内容
#skip-external-locking
#只能用IP地址检查客户端的登录,不用主机名
#skip_name_resolve=1
skip-name-resolve
#事务隔离级别,默认为可重复读,mysql默认可重复读级别(此级别下可能参数很多间隙锁,影响性能)
#transaction_isolation=READ-COMMITTED
#数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
character-set-server=utf8mb4
#数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server=utf8mb4_general_ci
#设置client连接mysql时的字符集,防止乱码
init_connect='SET NAMES utf8mb4'
#是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names=1
#最大连接数
max_connections=400
#最大错误连接数
max_connect_errors=1000
#TIMESTAMP如果没有显示声明NOT NULL,允许NULL值
explicit_defaults_for_timestamp=true
#SQL数据包发送的大小,如果有BLOB对象建议修改成1G
max_allowed_packet=128M
#MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭
#MySQL默认的wait_timeout 值为8个小时, interactive_timeout参数需要同时配置才能生效
interactive_timeout=1800
wait_timeout=1800
#内部内存临时表的最大值 ,设置成128M。
#比如大数据量的group by ,order by时可能用到临时表,
#超过了这个值将写入磁盘,系统IO压力增大
tmp_table_size=134217728
max_heap_table_size=134217728
#禁用mysql的缓存查询结果集功能
#后期根据业务情况测试决定是否开启
#大部分情况下关闭下面两项
#query_cache_size = 0
#query_cache_type = 0
#数据库错误日志文件
#log-error=/var/log/mysqld.log
#慢查询sql日志设置
#slow_query_log=1
#slow_query_log_file=/var/log/mysqld_slow.log
#检查未使用到索引的sql
log_queries_not_using_indexes=1
#针对log_queries_not_using_indexes开启后,记录慢sql的频次、每分钟记录的条数
log_throttle_queries_not_using_indexes=5
#作为从库时生效,从库复制中如何有慢sql也将被记录
log_slow_slave_statements=1
#慢查询执行的秒数,必须达到此值可被记录
long_query_time=8
#检索的行数必须达到此值才可被记为慢查询
min_examined_row_limit=100
#mysql binlog日志文件保存的过期时间,过期后自动删除
#expire_logs_days=5
binlog_expire_logs_seconds=604800

#若你的MySQL数据库主要运行在境外,请务必根据实际情况调整本参数
default_time_zone = "+8:00"

 

           7. 创建容器

docker run -p 3306:3306 --name mysql --restart=always --privileged=true -v /mnt/mysql/log:/var/log/mysql -v /mnt/mysql/data:/var/lib/mysql -v /mnt/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /mnt/mysql/mysql-files:/var/lib/mysql-files -v /etc/localtime:/etc/localtime:ro -e MYSQL_ROOT_PASSWORD=123456 -d  8.134.59.62:8083/mysql
●docker run: 运行一个新的容器
●-p 3306:3306:第一个是宿主机端口,第二个是容器端口,将容器的 3306 端口映射到宿主机的 3306 端口
●--name mysql: 为容器指定名称为 mysql
●--restart=always: 容器随docker服务自动启动
●--privileged=true:获取宿主机root权限
●-v /mnt/mysql/log:/var/log/mysql: 第一个是宿主机目录,第二个是容器目录,将宿主机的日志目录挂载到容器的 /var/log/mysql 目录
●-v /mnt/mysql/data:/var/lib/mysql: 第一个是宿主机目录,第二个是容器目录,将宿主机的数据存放目录挂载到容器的数据目录
●-v /mnt/mysql/conf/my.cnf:/etc/mysql/my.cnf: 第一个是宿主机的mysql配置文件,第二个是容器的配置文件,将宿主机的配置文件挂载到容器
●-v /mnt/mysql/mysql-files:/var/lib/mysql-files: 将宿主机的数据导入目录挂载到容器数据导入目录
●-v /etc/localtime:/etc/localtime:ro: 挂载宿主机的本地时间到容器,保持时间同步,设置为只读(ro)
●e MYSQL_ROOT_PASSWORD=123456: 设置 MySQL root 用户的密码为 123456
●-d: 后台运行容器
●8.134.59.62:8083/mysql:镜像名称,这个是从私有仓库中拉取下来的镜像

 

          8. 检验MySQL是否安装成功

#查看MySQL容器是否启动成功
docker ps
#查看MySQL容器启动日志是否有报错
docker logs  mysql
#查看MySQL端口号是否在启用状态
netstat -nlpt |grep 3306
#navicat远程登陆

 

            9. 常见问题处理

           a. MySQL安装后,navicat远程登陆不了,原因是端口号没有开放

#查看发现远程访问MySQL端口号不通
telnet ip:端口号
解决方法:云服务器安全组开放端口,本地防火墙添加端口例外

 

             b.修改挂载映射的配置文件端口号,其实是修改容器的端口,而不是宿主机端口号

             c. 修改MySQL的宿主机访问端口号,在创建容器时设置所需的宿主机端口即可

             d.进入MySQL容器后,使用mysql -u root -p登陆失败

查看容器日志报错:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
#解决方法:由于MySQL容器不会使用本地套接字来连接,而是通过网络端口进行连接因此可使用IP进行登陆
mysql -h 127.0.0.1 -P 3306 -u root -p

 

查看容器日志报错:Error on realpath() on '/var/lib/mysql-files' (Error 2 - No such file or directory)
客户端连接登录报错:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) #解决方法:MySQL跳过密码登陆,连续按两下Enter键即可免密登录
docker exec -it mysql /bin/bash
mysql -u root -p
连续按两下Enter键免密登录

               e. 客户端远程连接,root用户没有远程登录权限:“ERROR 1130: Host xxx.xxx.xxx.xxx is not allowed to connect to this MySQL server”

#解决方法:登陆MySQL本地,为root用户开启远程登陆权限

#a.进入容器
docker  exec  -it  mysql   /bin/bash
#b.登陆MySQL本地
mysql -u  root  -p  
输入root用户密码登录本地
#c.进入mysql库,查看root用户是否有远程权限
use  mysql;
select   host  from  user  where  user='root';
结果显示host栏对应的是localhost,那证明root用户没有远程登陆权限
#d.授予root用户远程登录权限,并刷新权限
update  user  set  host='%'  where  user='root';
FLUSH PRIVILEGES;
#e.检查授予root用户远程登录权限是否成功
select   host  from  user  where  user='root';
结果显示host栏对应的是%,证明授权成功

说明:如下是授予root用户远程登录权限的截图过程

 

                 f.MySQL修改密码

#进入mysql容器
docker exec -it 容器名 /bin/bash
#本地登录MySQL或者用navicat远程连接登陆
mysql -u root -p
#修改用户密码
ALTER USER 'root'@'%' IDENTIFIED BY '新密码';
#刷新权限
FLUSH PRIVILEGES;

 

标签:容器,log,root,MySQL,mnt,mysql,安装
From: https://www.cnblogs.com/sheepboy/p/18554968

相关文章

  • 如何在Ubuntu 20.04 LTS上安装Dotnet Core?
    在本教程中,我们将向您展示如何在香港服务器的Ubuntu20.04LTS系统上安装DotnetCore。.NETCore是一个免费的开源软件框架和开源软件框架。它是由Microsoft开发的。它是由Microsoft开发的。.NETCore是一个非常强大的框架。它通常用于开发Web应用程序。步骤1.首先,通过apt在......
  • 【SkekchUp Pro 2024下载与安装教程】
    SketchUp Pro 2024作为一款专业的3D建模软件,在建筑设计、城市规划和室内设计等领域具有广泛的应用前景.‌安装SketchUpPro2024的基本要求:‌操作系统要求‌Windows系统‌:SketchUpPro2024支持Windows10和Windows11操作系统。确保你的系统是最新的,并且已经安装了所有重......
  • Sublime Text4 4180 安装激活
    介绍:此教程用于Windows下SublimeText44180版本的安装和激活。无需安装其他软件,无需下载替换文件,无需注册机等。官网:https://www.sublimetext.com下载地址https://download.sublimetext.com/sublime_text_build_4180_x64_setup.exe激活:默认安装路径:C:\ProgramFiles\Subli......
  • 详解RabbitMQ在Ubuntu上的安装
    ​​​​​​​目录Ubuntu环境安装安装Erlang查看Erlang版本退出命令​编辑安装RabbitMQ确认安装结果安装RabbitMQ管理界面启动服务查看服务状态通过IP:port访问添加管理员用户给用户添加权限再次访问Ubuntu环境安装安装ErlangRabbitMq需要Erlang语⾔的⽀......
  • ComfyUI安装——专为新手设计的秋叶版教程及安装包
    前言:想要探索ComfyUI的强大功能,却苦于安装步骤复杂?别担心,本指南专为新手量身定制,带来轻松上手的ComfyUI安装教程。采用秋叶版安装包,让繁琐的安装过程变得简单易懂。无论您是编程小白还是AI领域的新手,跟随本文,您将一步步掌握ComfyUI的安装要领,开启您的创意之旅。今天和大家......
  • PyCharm2024.1.4专业版Windows安装激活教程
    前言​ 本教程适用于Pycharm2024.1.x版本,笔者本次安装的是2024.1.4Professional,亲测可用,打开后可看到界面显示已经激活到2099年。下载Pycharm安装包及激活脚本​ 进入jetbrains官网历史版本下载页面:https://www.jetbrains.com/pycharm/download/other.html,下拉找到2024.1......
  • MySQL 日常运维命令总结(一)
    一、连接数据库使用root用户和指定密码连接本地MySQL数据库root@localhost:(none)>`mysql-uroot-p'password'`指定主机和端口连接MySQL数据库root@localhost:(none)>`mysql-uroot-p'password'-h127.0.0.1-P3306`使用指定的套接字文件连接MySQL数据......
  • Docker安装配置Seata-Server
    1部署官方文档指引1.1client每个业务数据库都要新建undo_log表。对springboot应用,执行client-MySQL-AT,切tag=1.5.2:https://github.com/seata/seata/blob/v1.5.2/script/client/at/db/mysql.sql1.2server新建seata-for-hire数据库,执行server-MySQL:https......
  • windows下oracle安装
    windows下oracle安装本次在windows2019操作系统下安装oralce11g服务端和客户端 准备工作:1,windows2019虚拟服务器一台。2,oralce11gserver安装包下载。3,win32_11gR2_client 客户端安装包下载,以及常用测试用应用软件PLSQLDeveloper。 安装包解压,将两个安装包解压到......
  • brew 安装的Mysql,查找my.cnf文件位置
    通过Homebrew安装的MySQL,默认情况下不会创建my.cnf文件,但你可以按照以下方式找到配置文件的路径或者创建一个自定义的my.cnf文件:查找默认配置文件位置1.查看MySQL默认使用的配置文件路径:你可以通过运行以下命令来查看MySQL会读取的配置文件路径顺序:mysql--help|......