.dmg
格式的安装包进行安装,也可以使用包管理命令(port、brew)进行安装。同时也你可以使用docker进行安装。
.msi
格式的安装包进行安装,也可以使用一些集成环境,例如PHPStudy。同时你也可以使用docker进行安装。
.rpm
包安装,同时你也可以使用二进制文件安装,或者使用docker进行安装。
.rpm
格式,这种稍微麻烦一些,需要你手动的处理包依赖,同时你卸载也比较繁琐,你要手动的去卸载一些依赖包。也不推荐使用这种方式。
.dockerfile
文件,可以实现跨平台的安装。
本系列教程采用的是MySQL8.0的版本。这一点可能需要大家注意一下。
Linux安装
卸载mariadb
# 查看MariaDB是否安装
[root@192 yum.repos.d]# rpm -qa|grep mariadb
mariadb-libs-5.5.68-1.el7.x86_64
# 卸载MariaDB
[root@192 yum.repos.d]# rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
# 检测卸载结果,输出的内容是空则表示卸载成功
[root@192 yum.repos.d]# rpm -qa|grep mariadb复制
下载二进制文件
cd ~ && wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.30-el7-x86_64.tar
复制
/usr/local
目录下面,然后对其解压。
# cp mysql-8.0.30-el7-x86_64.tar /usr/local
# 解压
tar -xvf mysql-8.0.30-el7-x86_64.tar
# 查看解压文件
-rw-r--r--. 1 7161 31415 492490461 7月 7 2022 mysql-8.0.30-el7-x86_64.tar.gz
-rw-r--r--. 1 7161 31415 22006040 7月 7 2022 mysql-router-8.0.30-el7-x86_64.tar.gz
-rw-r--r--. 1 7161 31415 305543348 7月 7 2022 mysql-test-8.0.30-el7-x86_64.tar.gz复制
mysql-8.0.30-el7-x86_64.tar.gz
这个文件即可,其他的两个,我们暂且不管。
mysql-8.0.30-el7-x86_64.tar.gz
文件进行解压。
# 解压
tar -xvf mysql-8.0.30-el7-x86_64.tar.gz
# 对文件夹进行重命名
mv mysql-8.0.30-el7-x86_64 mysql
# 查看文件目录
cd mysql && ll
drwxr-xr-x. 2 7161 31415 4096 7月 7 2022 bin
drwxr-xr-x. 2 7161 31415 55 7月 7 2022 docs
drwxr-xr-x. 3 7161 31415 4096 7月 7 2022 include
drwxr-xr-x. 6 7161 31415 201 7月 7 2022 lib
-rw-r--r--. 1 7161 31415 287624 7月 7 2022 LICENSE
drwxr-xr-x. 4 7161 31415 30 7月 7 2022 man
-rw-r--r--. 1 7161 31415 666 7月 7 2022 README
drwxr-xr-x. 28 7161 31415 4096 7月 7 2022 share
drwxr-xr-x. 2 7161 31415 77 7月 7 2022 support-files
# 创建数据目录(一定注意data目录是放在mysql目录下的)
mkdir data复制
用户权限
1、创建MySQL用户组。
groupadd mysql
复制
2、创建MySQL用户。
useradd -r -g mysql mysql
复制
3、更改mysql目录的用户组和用户权限。
chown -R mysql:mysql mysql
chmod -R 755 mysql复制
初始化安装
[root@192 bin]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql
2023-04-07T17:14:35.743452Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.30) initializing of server in progress as process 8353
2023-04-07T17:14:35.753503Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2023-04-07T17:14:36.629899Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2023-04-07T17:14:38.277736Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: D(v>gZT0nOFb复制
root@localhost: D(v>gZT0nOFb
。MySQL为我们生成了一个初始密码,密码是
D(v>gZT0nOFb
,你在初始化的时候不一定是这个密码,根据自己的实际情况来。
创建配置文件
vim etc/my.cnf
)。配置文件的内容如下,你可以根据自己的情况来编写,推荐直接使用下面的配置。
[client]
port = 3306
socket = /usr/local/mysql/data/mysql.sock
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
init_connect = 'SET NAMES utf8mb4'
port = 3306
socket = /usr/local/mysql/data/mysql.sock
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
datadir = /usr/local/mysql/data
lower_case_table_names=1
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout复制
chmod 777 /etc/my.cnf
复制
ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
ln -s /usr/local/mysql/mysql.sock /var/mysql.sock复制
设置开机启动
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 345 mysqld on
chkconfig --list
注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。
要列出 systemd 服务,请执行 'systemctl list-unit-files'。
查看在具体 target 启用的服务请执行
'systemctl list-dependencies [target]'。
mysqld 0:关 1:关 2:开 3:开 4:开 5:开 6:关
netconsole 0:关 1:关 2:关 3:关 4:关 5:关 6:关
network 0:关 1:关 2:开 3:开 4:开 5:开 6:关复制
如果看到3、4和5选项都显示开,表示设置成功。
服务管理
1、启动服务。
# 6版本
service mysql start
# 7版本
systemctl start mysql复制
2、重启服务
# 6版本
service mysql restart
# 7版本
systemctl restart mysql复制
3、停止服务
# 6版本
service mysql stop
# 7版本
systemctl stop mysql复制
4、查看服务状态
# 6版本
service mysql status
# 7版本
systemctl status mysql复制
操作mysql
1、启动服务
systemctl restart mysql
复制
2、登录MySQL服务
[root@192 bin]# mysql -uroot -p
mysql: [Warning] World-writable config file '/etc/my.cnf' is ignored.
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.30 MySQL Community Server - GPL
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>复制
这里默认的密码,就是上面在初始化安装过程中MySQL自动生成的密码,输入密码即可。
3、修改默认的密码
alter user 'root'@'localhost' identified by '123456';
set password for root@localhost = '123456';复制
上面的两种方式,任意选一种即可。
4、设置远程连接
mysql>use mysql;
msyql>update user set user.Host='%' where user.User='root';
mysql>flush privileges;复制
5、示例创建
mysql> create database demo;
Query OK, 1 row affected (0.05 sec)
mysql> use demo;
Database changed
mysql> create table demo ( id int primary key, name varchar(32) not null);
Query OK, 0 rows affected (0.03 sec)
mysql> show tables;
+----------------+
| Tables_in_demo |
+----------------+
| demo |
+----------------+
1 row in set (0.00 sec)复制
Docker安装
1、创建一个docker-compose.yml
的文件。并写入如下内容:
version: '3.1'
services:
db:
image: mysql
# NOTE: use of "mysql_native_password" is not recommended: https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password
# (this is just an example, not intended to be a production configuration)
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
adminer:
image: adminer
restart: always
ports:
- 8081:8080复制
2、执行docker-compose.yml
,启动服务
$ docker-compose up -d
[+] Running 2/2
⠿ Container root-db-1 Running 0.0s
⠿ Container root-adminer-1 Started 1.0ss复制
3、查看服务启动状态
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7310e996a435 adminer "entrypoint.sh php -…" 5 seconds ago Up 3 seconds 0.0.0.0:8081->8080/tcp root-adminer-1复制
通过命令输出的结果,可以看到容器已经启动成功了。
课后练习
1、MySQL如果忘记root账户密码,该怎么解决?
2、MySQL配置文件启动的顺序是什么样的?
3、MySQL服务启动的方式有哪几种?每种方式之间有什么区别?
文章转载自卡二条的技术圈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。