跳至主要內容

MySQL安装

知识库数据库MySQLMySQL大约 5 分钟

CentOS7 yum 安装 MySQL5.7

# 检查MySQL是否安装
yum list installed | grep mysql
rpm -qa|grep mysql
# 卸载MySQL
rpm -qa|grep mysql|xargs rpm -e --nodeps

# 下载并安装MySQL官方的 Yum Repository
## 下载地址:https://dev.mysql.com/downloads/repo/yum/
#安装yum源
wget https://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm
rpm -ivh mysql80-community-release-el7-3.noarch.rpm
#使用此命令可以查看 MySQL Yum 存储库中的所有子存储库,并查看其中哪些子存储库已启用或禁用
yum repolist all | grep mysql
#关闭 MySQL 8的下载源
yum-config-manager --disable mysql80-community
#开启 MySQL 5.7下载源
yum-config-manager --enable mysql57-community
# 查看是否配置正确
yum repolist enabled | grep mysql
# 安装MySQL
yum install -y mysql-community-server
## 遇到以下问题解决方案
# "MySQL 5.7 Community Server" 的 GPG 密钥已安装,但是不适用于此软件包。请检查源的公钥 URL 是否配置正确。
# 官方解决方案链接:https://dev.mysql.com/doc/refman/8.0/en/checking-rpm-signature.html
rpm --checksig mysql80-community-release-el7-3.noarch.rpm
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

# 启动MySQL
systemctl start mysqld.service && systemctl status mysqld.service
# 初始root密码
grep "password" /var/log/mysqld.log
# 修改root密码
mysql -uroot -p -e 'alter user user() identified by "123456@aA"'
mysql -uroot -p -e 'SELECT host, user FROM mysql.user'

## 客户端免密登录
cat >> /etc/my.cnf <<EOF
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#设置3306端口
port = 3306
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

# 0:大小写敏感 1:大小写不敏感
lower_case_table_names=1
# 默认字符集
character-set-server=utf8
# 默认时区
default-time_zone = '+8:00'
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
user=root
password=123456@aA
default-character-set=utf8
EOF
# 重启MySQL服务
systemctl start mysqld.service && systemctl status mysqld.service

Docker 安装

cat >> docker-compose.yml <<EOF
version: "3"
services:
  mysql:
    image: mysql:5.7.36
    container_name: mysql
    restart: always
    environment:
      TZ: "Asia/Shanghai"
      MYSQL_ROOT_PASSWORD: 123456@aA
      MYSQL_ROOT_HOST: "%"
      MYSQL_DATABASE: "demo_db"
      MYSQL_USER: "demo_user"
      MYSQL_PASSWORD: "123456@aA"
    volumes:
      - ./mysql:/var/lib/mysql
    ulimits:
      nproc: 65535
      nofile:
        soft: 65535
        hard: 65535
EOF
# 启动
docker-compose up -d
# 停止
docker-compose down

CentOS 离线安装 MySQL

wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.35-el7-x86_64.tar.gz
tar xzvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
mv /usr/local/mysql-5.7.26-linux-glibc2.12-x86_64 /usr/local/mysql-5.7
cat >> /etc/my.cnf <<EOF
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#跳过权限表校验
#skip-grant-tables
skip-name-resolve
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=/usr/local/mysql-5.7
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql-5.7/data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M
EOF

groupadd mysql
useradd -r -g mysql mysql
chown -R mysql:mysql /usr/local/mysql-5.7/

mkdir /usr/local/mysql-5.7/data
cd /usr/local/mysql-5.7/bin && ./mysqld --initialize --user=mysql --basedir=/usr/local/mysql-5.7 --datadir=/usr/local/mysql-5.7/data
cp /usr/local/mysql-5.7/support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
systemctl enable mysql.service
systemctl start mysql.service
ln -s /usr/local/mysql-5.7/bin/mysql /usr/bin
mysql -uroot -p
mysql> alter user user() identified by "root";
mysql> update mysql.user set authentication_string=password('root') where user='root' and Host ='localhost';
mysql> update mysql.user set host='%' where user='root';
mysql> flush privileges;

mysql -uroot -proot

CentOS 下编译安装

#安装依赖包:
yum -y install make gcc-c++ cmake bison-devel ncurses-devel
#下载mysql:
wget http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.35.tar.gz
tar xvf mysql-5.6.35.tar.gz
cd mysql-5.6.35
#编译安装:
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
## 安装:
make && make install
## 配置mysql。
## 设置权限:
groupadd mysql
groupadd -g mysql mysql
chown -R mysql:mysql /usr/local/mysql
## 初始化配置
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.18
cd /usr/local/mysql
scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
# 注意: 将/etc/my.cnf 改成其他名字,以防冲突。
## 启动Mysql
cp support-files/mysql.server /etc/init.d/mysql
chkconfig mysql on
service mysql start --启动MySQL
## 配置system管理
PATH=/usr/local/mysql/bin:$PATH
export PATH
source /etc/profile
mysql -uroot
mysql> set password = password('123456')
## 设置远程访问
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

Windows 中安装 MySQL5.7

my.ini 文件内容
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8

[mysqld]
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=D:\\Tools\\MySQL\\mysql-5.7.33-winx64
# 设置mysql数据库的数据的存放目录
datadir=D:\\Tools\\MySQL\\mysql-5.7.33-winx64\\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 0:大小写敏感 1:大小写不敏感
lower_case_table_names=1
# 默认时区
default-time_zone = '+8:00'
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 用于登录数据库是跳过验证权限
#skip-grant-tables

[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
user=root
password=123456
default-character-set=utf8
## 官网下载:https://dev.mysql.com/downloads/mysql/5.7.html#downloads
## 解压路径:D:\Tools\MySQL\mysql-5.7.33-winx64
## 新建`data`和`my.ini`文件
# cmd 以管理员身份运行
cd D:\Tools\MySQL\mysql-5.7.33-winx64\bin
# 初始化数据库 并 记住root密码
# mysqld --initialize-insecure 空的root密码
mysqld --initialize --user=mysql --console
# 安装服务
mysqld --install
#mysqld install MySQL --defaults-file="D:\\Tools\\MySQL\\mysql-5.7.33-winx64\\my.ini"
# 启动服务
net start mysql
# 登录MySQL修改root密码,若找不到初始密码可以在`my.ini`中[mysqld] 添加`skip-grant-tables`
mysql -uroot -p
set password for root@localhost=password('123456');

编译安装 mysql

#安装依赖包:
yum -y install make gcc-c++ cmake bison-devel ncurses-devel
#下载mysql:
wget http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.35.tar.gz
tar xvf mysql-5.6.35.tar.gz
cd mysql-5.6.35

#编译安装:

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
#安装:
make && make install
#配置mysql。
#设置权限:
groupadd mysql
groupadd -g mysql mysql
chown -R mysql:mysql /usr/local/mysql
#初始化配置:
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.18
cd /usr/local/mysql
scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
## 注意: 将/etc/my.cnf 改成其他名字,以防冲突。
#启动Mysql:
cp support-files/mysql.server /etc/init.d/mysql
chkconfig mysql on
service mysql start --启动MySQL
#配置system管理:
PATH=/usr/local/mysql/bin:$PATH
export PATH
source /etc/profile
mysql -uroot
mysql> set password = password('123456')
#设置远程访问:
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
#mysql 配置完成。