mysql的安装
概念
数据是客观事物的符号表示
- 内存中的数据: 速度快,不能持久性保存
- 文件中的数据,随着文件的增大,检索困难
数据库(Database)
- 按照一定数据结构存储数据的仓库
数据库管理系统(DBMS)
- 概念: 操纵和管理数据库的软件
- 用户向DBMS发起请求,DBMS调用底层,得到结果后返回数据给用户
数据库分类
关系型数据库管理系统(RDBMS)
采用关系模型管理数据 ,采用二维表格的形式来简化数据关系实现对数据的管理
常见关系型数据库:
- oracle数据库:oracle公司产品,大型分布式数据库管理系统.大型企业,金融,国企,产品免费,服务收费
- mysql数据库:oracle公司,针对中小型系统;开源 免费(闭源风险).互联网厂商
- mariaDB 数据库:mysql分支,社区维护5.5版本之前和mysql无区别.
- Sql Server :Microsoft 中小型企业.只能与windsows运行
- DB2:IBM公司,中小型企业,外企,银行
非关系型的数据库管理系统(Nosql)
not only sql
弥补关系型数据库在高io,高可用方面的局限性
非关系型数据库
- redis
- hbase
- mongodb
- neo4j(图数据库)
mysql初识
mysql体积小,开源免费,支持GPL(开源软许可证)协议
发展过程
- 1996年发布mysql1.0,mysql ab公司
- 2000年 正式开源
- 2008年被sun以10亿美元收购
- 2009年sun被oracle以74亿美元收购
mysql是一个关系型的数据库管理系统
- 采用关系模型对数据进行管理,对不同的数据采用分表的形式管理,多张表存在的情况下
- 可以采用分库的形式进行管理
mysql数据库管理系统中可以管理多个数据库
在一个数据库中可以存放多张表
Windows下安装
- Servers端提供数据库服务:响应请求。社区版免费
- 官网下载链接 https://dev.mysql.com/downloads/mysql/
- 国内镜像:mysql-ftp
- 国内镜像:mysql下载
准备工作
mysql最新版下载地址: https://dev.mysql.com/downloads/mysql/
- 直接点击下载,将下载好的zip包解压到自己的工作目录下,例如我解压到了:
D:\developers\javadeveloper\SOFT
下
- 直接点击下载,将下载好的zip包解压到自己的工作目录下,例如我解压到了:
在根目录下创建 my.ini配置文件, 我的文件内容如下:
- 其中的basedir设置修改为自己的解压目录
- 默认的数据存放目录为根目录下的data目录,安装前请确保data目录为空,或者删除整个data文件夹
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54[client]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
# 设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=D:\\developers\\javadeveloper\\SOFT\\mysql-8.0.17-winx64
# 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错
# datadir=D:\developers\javadeveloper\SOFT\mysql-8.0.17-winx64\data
# 允许最大连接数
max_connections=5000
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#default_authentication_plugin=mysql_native_password
innodb_buffer_pool_size=512M
log_bin_trust_function_creators=1
lower_case_table_names=1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
transaction_isolation=READ-COMMITTED
group_concat_max_len=102400
#######
slow_query_log=1
long_query_time=1
sync_binlog=1
#skip-name-resolve
table_open_cache=4096
max_allowed_packet=64M
binlog_cache_size=32M
max_heap_table_size=128M
read_rnd_buffer_size=64M
sort_buffer_size=64M
join_buffer_size=128M
thread_cache_size=300
key_buffer_size=64M
read_buffer_size=32M
read_rnd_buffer_size=128M
bulk_insert_buffer_size=512M
tmp_table_size=512M
innodb_buffer_pool_size=1G
innodb_buffer_pool_instances=8
innodb_thread_concurrency=8
innodb_flush_log_at_trx_commit=2
innodb_log_buffer_size=32M
innodb_log_file_size=256M
innodb_log_files_in_group=4
innodb_max_dirty_pages_pct=90
innodb_lock_wait_timeout=120- 其中的basedir设置修改为自己的解压目录
安装
上述工作准备好后,开始安装:
以管理员的身份开启cmd, 并且进入mysql目录的bin文件夹
输入初始化命令:
- 这一步会根据你的my.ini文件初始化的你mysql软件,并且生成root用户的默认初始密码,并打印在控制台
1
mysqld --initialize --console
输入安装命令安装:
1
mysqld install
windows下mysql启停命令
- 启动:
net start mysql
- 停止:
net stop mysql
- 启动:
客户端连接mysql服务器,进入后,会有
mysql>
样子的数据库交互终端,可以在此终端输入mysql命令或者sql语句了1
mysql -h 127.0.0.1 -P 3306 -u root -p
参数说明:
- -h : 指定客户端所要登录的 MySQL 主机名, 登录本机(localhost 或 127.0.0.1)该参数可以省略;
-u : 登录的用户名;
- -p : 告诉服务器将会使用一个密码来登录, 如果所要登录的用户名密码为空, 可以忽略此选项。
修改默认root密码
第一次使用mysql需要修改掉默认密码,否则无法使用,修改命令:
1
2
3use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Aa1234567!';
# “Aa1234567!”是我的新密码,mysql8对密码的要求比较高,不能设置的太简单修改为允许远程访问:
默认仅仅只有本机可以连接,包括navicat工具也无法连接
如果需要允许远程访问,需要设置具体的ip,或者换成%允许所有ip访问,
例如再执行如下命令可以允许所有用户访问。
查看root用户允许访问的IP值,可以看到只允许本机访问。
1
select host, user, authentication_string, plugin from user;
修改root对应的host的值为%, 允许任何ip地址的远程客户端都可以访问我的mysql服务器
1
2update user set host='%' where user='root';
flush privileges;
如果出现在使用Navicat Premium 12连接MySQL数据库时会出现
Authentication plugin 'caching_sha2_password' cannot be loaded
的错误时,在mysql数据库中依次执行如下命令:1
2
3
4
5
6# 修改加密规则
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
#更新一下用户的密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
#刷新权限 sh
FLUSH PRIVILEGES;
文件存放目录
Data dir : 存放数据文件
Data :每创建一个数据库就会创建相应的文件夹
- frm 保存表的结构信息
my.ini: mysql的配置文件
- 跳过授权验证:
skip-grant-table
- 跳过授权验证:
Windows安装MariaDB
介绍
MariaDB将数据转化为结构化信息,应用范围很广,从银行到网站。它是MySQL的一个增强的、临时的替代品。之所以使用MariaDB,是因为它速度快、可伸缩且健壮,具有丰富的存储引擎生态系统、插件和许多其他工具,使得它非常适合各种用例。
MariaDB是作为开源软件和关系数据库开发的,它提供了一个SQL接口来访问数据。MariaDB的最新版本还包括GIS和JSON特性。
下载
下载相对应的电脑版本程序
安装
双击运行,下一步即可安装。
选择Next,设置数据库的密码
设置服务名和端口号
配置完成后,点击安装
等待安装完成..finsh,安装完成,会在桌面生成图标
配置环境变量
因为我安装的位置是默认的,在D盘找到,找到MariaDB 10.4(10.4代表的是版本)
添加bin路径到Path中。
验证
打开cmd命令,输入
mysqld
启动mariadb服务进程。在电脑管理,可以看到我们这个服务进程,已经在运行了(默认是MariaDB)
使用数据库(命令:mysql -u 数据库用户名(默认是root) -p)回车,输入密码(安装步骤中设置的密码)
mysql8 配置不区分大小写
linux下mysql默认是要区分表名大小写的。
mysql是否区分大小写设置是由参数lower_case_table_names决定的
参数说明(lower_case_table_names)
Lunix下lower_case_table_names默认值为 0 ;Windows下默认值是 1 ;Mac OS X下默认值是 2 。
1
2
3
4
5| 参数值: 0 | 使用CREATE TABLE或CREATE DATABASE语句指定的大小写字母在硬盘上保存表名和数据库名。名称比较对大小写敏感。在大小写不敏感的操作系统如windows或Mac OS x上我们不能将该参数设为0,如果在大小写不敏感的文件系统上将--lowercase-table-names强制设为0,并且使用不同的大小写访问MyISAM表名,可能会导致索引破坏。
| 参数值: 1 | 表名在硬盘上以小写保存,名称比较对大小写不敏感。MySQL将所有表名转换为小写在存储和查找表上。该行为也适合数据库名和表的别名。该值为Windows的默认值。
| 参数值: 2 | 表名和数据库名在硬盘上使用CREATE TABLE或CREATE DATABASE语句指定的大小写字母进行保存,但MySQL将它们转换为小写在查找表上。名称比较对大小写不敏感,即按照大小写来保存,按照小写来比较。注释:只在对大小写不敏感的文件系统上适用! innodb表名用小写保存。
lower_case_table_names = 0 表示区分大小写(即对表名大小写敏感),默认是这种设置。这样设置后,在mysql里创建的表名带不带大写字母都没有影响,都可以正常读出和被引用。
lower_case_table_names = 1 不区分大小写(即对表名大小写不敏感)表名在硬盘上以小写保存,MySQL将所有表名转换为小写存储和查找表上。该行为也适合数据库名和表的别名。
变量lower_case_file_system说明是否数据目录所在的文件系统对文件名的大小写敏感,其中:ON说明对文件名的大小写不敏感,OFF表示敏感。
1
2
3
4
5
6
7
8mysql> show variables like "%case%";
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_file_system | OFF |
| lower_case_table_names | 0 |
+------------------------+-------+
2 rows in set (0.00 sec)
初始化指定
初始化指定参数
1
/usr/sbin/mysqld --initialize --user=mysql --lower-case-table-names=1
配置文件 /etc/my.cnf
1
2[mysqld]
lower_case_table_names=1
已区分解决办法
不在意数据的话直接删除数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29#删除DATA文件夹
rm -rf /var/lib/mysql
#重新初始化并启动MYSQL
mysqld --initialize --console --lower-case-table-names=1
chown -R mysql:mysql /var/lib/mysql/
systemctl start mysqld
systemctl status mysqld
#重新初始化登录帐户 vim /etc/my.cnf.d
# [mysqld]增加
skip-grant-tables
# 退出后重启
systemctl stop mysqld
systemctl start mysqld
# 开始重置密码
mysql -uroot -p --输入任意密码
# 必须先执行 flush privileges,否则会报The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
flush privileges;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'tw369.com';
UPDATE USER SET host ="%" where user = "root";
flush privileges;
exit
#启动服务
# 删除配置文件的 skip-grant-tables
systemctl restart mysqld保留数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14# 以安全模式关闭数据库
mysqladmin -uroot -p shutdown
# 先在my.cnf里将lower_case_table_names参数再次调整为0,改成区分大小写
[root@test-huanqiu ~]# cat /etc/my.cnf //添加下面一行设置
.....
[mysqld]
lower_case_table_names=1
.....
#启动mysql
/etc/init.d/mysql start
# 登陆mysql数据库,将带大写字母的旧表改为小写表名
alter table 旧表名 rename 新表名"
# 最后再启动mysql即可!保留数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15#将数据库数据通过mysqldump导出。
# 备份指定数据库(多个表以空格间隔):mysqldump -uroot -p test > /backup/mysqldump/test.db
# 备份所有数据库:
mysqldump -uroot -p --all-databases > /backup/mysqldump/all.db
# 在my.cnf中更改lower_case_tables_name = 1,并按照删除数据的方式重启mysql数据库。
# 将导出的数据导入mysql数据库。
# 在导入备份数据库前,db_name如果没有,是需要创建的;
mysqladmin -uroot -p create db_name
mysql -uroot -p db_name < /backup/mysqldump/db_name.db
# soure 方法
mysql > use db_name
mysql > source /backup/mysqldump/db_name.db
Centos 8安装mariadb
安装MariaDB
安装命令
yum -y install mariadb mariadb-server
安装完成MariaDB,首先启动MariaDB
systemctl start mariadb
设置开机启动
systemctl enable mariadb
简单配置
- 输入
mysql_secure_installation
首先是设置密码,会提示先输入密码
Enter current password for root (enter for none):<–初次运行直接回车
设置密码
1
2
3Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车
New password: <– 设置root用户的密码
Re-enter new password: <– 再输入一次你设置的密码其他配置
1
2
3
4
5
6Remove anonymous users? [Y/n] <– 是否删除匿名用户,回车
Disallow root login remotely? [Y/n] <–是否禁止root远程登录,回车,
Remove test database and access to it? [Y/n] <– 是否删除test数据库,回车
Reload privilege tables now? [Y/n] <– 是否重新加载权限表,回车
初始化MariaDB完成,接下来测试登录
mysql -uroot -ppasswordMariaDB查看字符集
1
MariaDB [(none)]> show variables like "%character%";show variables like "%collation%";
安装MySQL 8.0
在安装MySQL之前我们先要把CentOS自带的mariadb,如果不卸载的话,在下面的安装中会报错。
查看mariadb版本
rpm -qa | grep mariadb
卸载mariadb
rpm -e mariadb-libs-5.5.56-2.el7.x86_64 --nodeps
去官网下载MySQL)mysql-8.0.21-1.el7.x86_64.rpm-bundle.tar
解压
tar -xvf mysql-8.0.21-1.el7.x86_64.rpm-bundle.tar
可以用
rpm -ivh
命令来进行安装mysql必须安装(注意顺序)
1
2
3
4rpm -ivh mysql-community-common-8.0.13-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.13-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.13-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.13-1.el7.x86_64.rpm非必要安装(注意顺序)
1
2
3
4rpm -ivh mysql-community-libs-compat-8.0.13-1.el7.x86_64.rpm
rpm -ivh mysql-community-embedded-compat-8.0.13-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-8.0.13-1.el7.x86_64.rpm
rpm -ivh mysql-community-test-8.0.13-1.el7.x86_64.rpm安装过程中可能会报以下错误:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25出现问题:
error:
Failed dependencies:
libnuma.so.1()(64bit) is needed by mysql-community-server-8.0.13-1.el7.x86_64 libnuma.so.1(libnuma_1.1)(64bit) is needed by mysql-community-server-8.0.13-1.el7.x86_64 libnuma.so.1(libnuma_1.2)(64bit) is needed by mysql-community-server-8.0.13-1.el7.x86_64
解决办法:
yum install numactl -y
出现问题:
error:
Failed dependencies:
pkgconfig(openssl) is needed by mysql-community-devel-8.0.13-1.el7.x86_64
解决办法:
yum install openssl-devel.x86_64 openssl.x86_64 -y
出现问题:
error:
Failed dependencies:
perl(Data::Dumper) is needed by mysql-community-test-8.0.13-1.el7.x86_64
解决办法:
yum -y install autoconf
出现问题:
error:
Failed dependencies:
perl(JSON) is needed by mysql-community-test-8.0.13-1.el7.x86_64
解决办法:
yum install perl.x86_64 perl-devel.x86_64 -y
yum install perl-JSON.noarch -y解决依赖问题,使用强制安装
1
2
3
4
5
6
7
8
9
10
11rpm -Uvh mysql-community-libs-8.0.21-1.el7.x86_64.rpm --nodeps --force
rpm -Uvh mysql-community-libs-compat-8.0.21-1.el7.x86_64.rpm --nodeps --force
rpm -Uvh mysql-community-client-8.0.21-1.el7.x86_64.rpm --nodeps --force
rpm -Uvh mysql-community-server-8.0.21-1.el7.x86_64.rpm --nodeps --force
# 报错:centos error while loading shared libraries: libssl.so.10: cannot open shared object file: No such file or directory
yum install compat-openssl10
# 报错:mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
yum install libncurses*启动并运行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15# 初始化数据库
mysqld --initialize --console --user=mysql --lower-case-table-names=1
# 目录授权,不授权的话MySQL没有写入权限,会启动失败
chown -R mysql:mysql /var/lib/mysql/
# 启动msyql服务
systemctl start mysqld
# 停止MySQL命令:
systemctl stop mysqld
# 查看msyql服务的状态
systemctl status mysqld
systemctl enable mysqld
# 查看一下临时密码
cat /var/log/mysqld.log | grep password
# 执行下列mysql命令 修改密码
sudo mysql_secure_installation
Centos 8安装MySQL 8.0
默认的CentOS 8存储库中安装最新版本的MySQL数据库服务器8.0版
CentOS 8还提供了MariaDB 10.3,它是MySQL 5.7的直接替代品。
安装
通过以root用户或具有sudo特权的用户身份使用CentOS软件包管理器来安装MySQL 8.0服务器:
@mysql
模块将安装MySQL及其所有依赖项。1
$ sudo dnf install
检查
启动时自动启动:
1
2
3$ sudo systemctl enable --now mysqld
Created symlink /etc/systemd/system/multi-user.target.wants/mysqld.service → /usr/lib/systemd/system/mysqld.service.要检查MySQL服务器是否正在运行,请输入:
systemctl status mysqld
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15$ sudo systemctl status mysqld
#返回信息如下:
[root@centos ~]# sudo systemctl status mysqld
● mysqld.service - MySQL 8.0 database server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor pres>
Active: active (running) since Wed 2020-01-08 13:29:20 CST; 14s ago
Process: 16940 ExecStartPost=/usr/libexec/mysql-check-upgrade (code=exited, s>
Process: 16725 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mysqld.service >
Process: 16701 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, sta>
Main PID: 16897 (mysqld)
Status: "Server is operational"
Tasks: 39 (limit: 4509)
Memory: 439.9M
CGroup: /system.slice/mysqld.service
└─16897 /usr/libexec/mysqld --basedir=/usr
修改身份验证插件
由于CentOS 8中的某些客户端工具和库与caching_sha2_password方法不兼容,因此CentOS 8存储库中包含的MySQL 8.0服务器设置为使用旧的mysql_native_password身份验证插件,该方法在上游MySQL 8.0发行版中设置为默认。
对于大多数设置,mysql_native_password方法应该没问题,但是,如果你想将默认身份验证插件更改为caching_sha2_password,这样可以更快并提供更好的安全性,请打开以下配置文件:
1
$ sudo vim /etc/my.cnf.d/mysql-default-authentication-plugin.cnf
将default_authentication_plugin的值更改为 caching_sha2_password:
1
2[mysqld]
default_authentication_plugin=caching_sha2_password关闭并保存文件,然后重新启动MySQL服务器以使更改生效:
1
$ sudo systemctl restart mysqld
设置MySQL根密码
运行mysql_secure_installation脚本,该脚本执行一些与安全性相关的操作并设置MySQL根密码:
1
$ sudo mysql_secure_installation
系统将要求你配置VALIDATE PASSWORD PLUGIN(验证密码插件),该插件用于测试MySQL用户密码的强度并提高安全性,密码验证策略分为三个级别:低、中和强,如果你不想设置验证密码插件,请按Enter。
在下一个提示符下,将要求你设置MySQL root用户的密码,完成此操作后,脚本还将要求你删除匿名用户,限制root用户对本地计算机的访问,并删除测试数据库,你应该对所有问题回答“是”。
要从命令行与MySQL服务器进行交互,请使用MySQL客户端实用程序,它作为依赖项安装,通过键入以下内容测试根访问权限:
卸载
命令如下:
1
2
3
4
5
6
7
8
9
10dnf remove @mysql
find / -name mysql
rm -rf /var/lib/selinux/targeted/active/modules/100/mysql
rm -rf /var/lib/mysql
rm -rf /var/lib/mysql/mysql
rm -rf /var/log/mysql
rm -rf /usr/share/selinux/packages/mysql
rm -rf /usr/share/selinux/targeted/default/active/modules/100/mysql
CentOS 7安装MariaDB
安装
更新CentOS 7操作系统
确保所运行的是最新的CentOS 7服务器,运行以下命令:
1
sudo yum -y update
添加MariaDB 10.4存储库
更新CentOS 7系统后,将MariaDB YUM存储库添加到CentOS 7服务器:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17cat >/etc/yum.repos.d/MariaDB.repo<<EOF
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF
然后更新yum缓存索引:
sudo yum makecache fast使用yum软件包管理器安装MariaDB 10.4:
- 有关已安装软件包的更多详细信息,请运行
$ rpm -qi MariaDB-server
1
sudo yum -y install MariaDB-server MariaDB-client
- 有关已安装软件包的更多详细信息,请运行
启动并启用MariaDB服务:
1
sudo systemctl enable --now mariadb
设置密码
现在在CentOS 7上安装了MariaDB 10.4,通过运行mysql_secure_installation来保护它:内容同上。
1
$ sudo mysql_secure_installation
Centos 7安装mysql5.7
- centos上默认是没有yum源的,所以我们需要自己先配置yum源。配置yum源步骤如下
下载yum源
1
wget 'https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm'
安装yum源
1
rpm -Uvh mysql57-community-release-el7-11.noarch.rpm
查看有哪些版本的mysql:
1
yum repolist all | grep mysql
安装
执行yum命令安装
1
yum install -y mysql-community-server
启动mysql
1
2systemctl start mysqld
# centos6中,使用service mysqld start查看状态
1
systemctl status mysqld
登录数据库,修改数据库密码
tar方式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76# 检查系统中有无安装过mysql
rpm -qa|grep mysql
# 查询所有mysql 对应的文件夹,全部删除
whereis mysql
find / -name mysql
# 查看系统自带的Mariadb
rpm -qa|grep mariadb
mariadb-libs-5.5.44-2.el7.centos.x86_64
# 卸载系统自带的Mariadb
rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64
# 删除etc目录下的my.cnf ,一定要删掉,等下再重新建,之前我将就用这个文件,后面改配置各种不生效
rm /etc/my.cnf
# 检查mysql 用户组是否存在
cat /etc/group | grep mysql
cat /etc/passwd |grep mysql
# 创建mysql 用户组和用户
groupadd mysql
useradd -r -g mysql mysql
# 下载tar /usr/local/
https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-5.7/mysql-5.7.36-linux-glibc2.12-x86_64.tar
tar -xvf mysql-5.7.36-linux-glibc2.12-x86_64.tar
tar -zxvf mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz
# 顺便改一下名字
mv mysql-5.7.36-linux-glibc2.12-x86_64 /usr/local/mysql
# 更改mysql 目录下所有文件夹所属的用户组和用户,以及权限
chown -R mysql:mysql /usr/local/mysql
chmod -R 755 /usr/local/mysql
# 进入mysql/bin/目录,编译安装并初始化mysql
mkdir -p /usr/local/mysql/data
./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql --lower-case-table-names=1
# 编写配置文件 my.cnf ,并添加配置
vi /etc/my.cnf
[mysqld]
datadir=/usr/local/mysql/data
port = 3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
max_connections=400
innodb_file_per_table=1
#表名大小写不明感,敏感为
lower_case_table_names=1
# 启动mysql 服务器
/usr/local/mysql/support-files/mysql.server start
//添加软连接
ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
//重启mysql服务
service mysql restart
,Rhtxud(a6p4
mysql -u root -p # 密码是之前生成的临时密码
set password for root@localhost = password('123456');
use mysql;
update user set user.Host='%' where user.User='root';
flush privileges;
# 设置开机自启
//将服务文件拷贝到init.d下,并重命名为mysql
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
//赋予可执行权限
chmod +x /etc/init.d/mysqld
//添加服务
chkconfig --add mysqld
//显示服务列表
chkconfig --list
修改密码
mysql5.7的新特性之一就是在初始化的时候会生成一个自定义的密码,然后你需要找到这个密码,登录的时候输入。
找到密码: 红框的地方就是密码
1
grep 'temporary password' /var/log/mysqld.log
登录客户端
1
2# 修改密码
SET PASSWORD = PASSWORD('Admin123!');设置远程可以登录
将云服务器上的3306端口开放;
配置远程可以访问。
1
2
3
4
5GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Admin123!' WITH GRANT OPTION;
flush privileges;
如果还不行可以尝试重启一下数据库。
简单的配置
打开配置文件,yum安装的默认在/etc文件夹下:
vim /etc/my.cnf
在[mysqld]下面添加,不需要分号
- 字符集:注意是utf8而不是utf-8!
character-set-server=utf8
这时候使用show variables like 'char%';
就可以查看到字符集都是utf8了 - sql支持group by语句
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
- 设置时区为东八区
default-time_zone = '+8:00'
- 字符集:注意是utf8而不是utf-8!
最后重启数据库,使配置生效。
设置开机启动
1 | systemctl enable mysqld |
Ubuntu安装MySQL
下载deb包
官网下载:https://dev.mysql.com/downloads/repo/apt/
1
wget https://repo.mysql.com//mysql-apt-config_0.8.14-1_all.deb
安装deb
下载完成后执行命令
1
sudo dpkg -i mysql-apt-config_0.8.14-1_all.deb
安装过程出现下图选择OK
sudo apt update
安装mysql8
1 | sudo apt install mysql-server |
输入root密码
身份认证插件有如下 2 种可供选择:
- 使用存储密码加密(推荐)
- 使用传统认证模式(MySQL 5.x 兼容)
查看mysql是否安装成功
1
mysql -u root -p
安装5.7
1 | sudo apt install mysql-server-5.7 |
卸载
- 该方法是彻底删除ubuntu下面的文件,所以mysql原数据会被删掉,所以一定一定要记得备份.
输入下面命令
1
sudo apt-get remove --purge mysql-\*
手动删除mysql剩余文件,执行命令
1
2
3
4
5sudo find / -name mysql -print
# 接下来一一删除:执行命令
sudo rm -rf /var/lib/mysql
sudo rm -rf /etc/mysql
sudo rm -rf /ect/init.d/mysql
Debian下安装
1 | # 下载 |
Scoop安装Mysql
安装
1
scoop install vcredist2022 mysql57
管理员设置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21mysqld --install MySQL --defaults-file="D:\Scoop\apps\mysql57\current\my.ini"
Service successfully installed.
# 启动
net start mysql
# 启动失败 删除 Scoop\persist\mysql57\data下的内容
mysqld --initialize-insecure
# 修改密码 mysqladmin -uroot -p oldpwd password 123456;
# ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
mysql -uroot
use mysql # 连接权限数据库
update user set authentication_string=password('123456') where user='root' and host='localhost'; # 改密码
flush privileges; # 刷新权限
# 开启远程
use mysql # 连接权限数据库
update user set host = '%' where user = 'root';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;
flush privileges;mysql57.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86{
"homepage": "https://dev.mysql.com/downloads/mysql/5.7.html",
"description": "The world's most popular open-source database, supported by an active community.",
"version": "5.7.40",
"license": "GPL-2.0-only",
"architecture": {
"64bit": {
"url": "https://dev.mysql.com/get/mysql-5.7.40-winx64.zip",
"hash": "md5:ac3874006f7e391b9413fb6cabd1a12b",
"extract_dir": "mysql-5.7.40-winx64"
},
"32bit": {
"url": "https://dev.mysql.com/get/mysql-5.7.40-win32.zip",
"hash": "md5:9abd10d47bdfdb1123411cfb723d401c",
"extract_dir": "mysql-5.7.40-win32"
}
},
"bin": [
"bin\\innochecksum.exe",
"bin\\myisamchk.exe",
"bin\\myisamlog.exe",
"bin\\myisampack.exe",
"bin\\myisam_ftdump.exe",
"bin\\mysql.exe",
"bin\\mysqladmin.exe",
"bin\\mysqlbinlog.exe",
"bin\\mysqlcheck.exe",
"bin\\mysqld.exe",
"bin\\mysqldump.exe",
"bin\\mysqlimport.exe",
"bin\\mysqlshow.exe",
"bin\\mysqlslap.exe",
"bin\\mysql_config_editor.exe",
"bin\\mysql_secure_installation.exe",
"bin\\mysql_ssl_rsa_setup.exe",
"bin\\mysql_tzinfo_to_sql.exe",
"bin\\mysql_upgrade.exe",
"bin\\my_print_defaults.exe"
],
"persist": ["data", "my.ini"],
"pre_install": [
"$ini = \"$dir\\my.ini\"",
"if (!(Test-Path \"$ini\")) {",
" # Using $dir instead of $persist_dir, causes this error:",
" # [ERROR] [MY-010187] [Server] Could not open file '~/scoop/apps/mysql/current/data/host.err' for error logging: Permission denied",
" Add-Content -Path \"$ini\" -Value \"[mysqld]`ndatadir=$($persist_dir -replace '\\\\', '/')/data\" -Encoding Ascii",
" # Set username so it's not required when connecting",
" Add-Content -Path \"$ini\" -Value \"[client]`nuser=root\" -Encoding Ascii",
"}"
],
"post_install": [
"if (!(Test-Path \"$dir\\data\\auto.cnf\")) {",
" warn 'Initializing data directory ...'",
" Invoke-ExternalCommand -FilePath \"$dir\\bin\\mysqld.exe\" -ArgumentList '--initialize-insecure'",
" warn 'Database has been initialized (username: root, password: <blank>)'",
"}"
],
"checkver": {
"url": "https://dev.mysql.com/downloads/mysql/5.7.html",
"regex": "<h1>MySQL Community Server ([\\d.]+)"
},
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://dev.mysql.com/get/mysql-$version-winx64.zip",
"extract_dir": "mysql-$version-winx64"
},
"32bit": {
"url": "https://dev.mysql.com/get/mysql-$version-win32.zip",
"extract_dir": "mysql-$version-win32"
}
},
"hash": {
"url": "https://dev.mysql.com/downloads/mysql/5.7.html",
"regex": "(?sm)$basename.*?md5\">([A-Fa-f\\d]{32})"
}
},
"notes": [
"Run 'mysqld --standalone' or 'mysqld --console' to start the Database,",
"or run following command as administrator to register MySQL as a service. See: https://dev.mysql.com/doc/refman/5.7/en/windows-start-service.html",
"",
"mysqld --install MySQL --defaults-file=\"$dir\\my.ini\"",
"",
"To stop and/or delete the Service run 'sc stop MySQL' and 'sc delete MySQL'."
]
}
在线方式
- mysql | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
- MySQL :: A Quick Guide to Using the MySQL APT Repository
Debain/Ubuntu
1 | #vi /etc/apt/sources.list.d/mysql-community.list |
my.ini 示例
1 | ## mysqld --initialize-insecure. 修改密码 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456'); |