MySQL数据库搭建
MySQL安装
安装信息
- 操作系统:centos8
- MySQL版本:8.0.19
- 安装方式:rpm
安装
- 上传安装文件到服务器
使用root用户安装,自动创建mysql用户
客户端
1
2
3rpm -ivh mysql-community-common-8.0.19-1.el8.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.19-1.el8.x86_64.rpm
rpm -ivh mysql-community-client-8.0.19-1.el8.x86_64.rpm服务端
1
rpm -ivh mysql-community-server-8.0.19-1.el8.x86_64.rpm
初始化
mysqld —initialize
修改用户组
chown -R mysql:mysql /var/lib/mysql
检查进程状态
systemctl status mysqld
启动
systemctl start mysqld
查看root密码
cat /var/log/mysqld.log | grep password
2020-07-06T06:18:47.050833Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: kaUb3H9p!OlGMySQL安全配置
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
60mysql_secure_installation
Securing the MySQL server deployment.
Enter password for user root:
The existing password for the user account root has expired. Please set a new password.
New password:
Re-enter new password:
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: no
Using existing password for root.
Change the password for root ? ((Press y|Y for Yes, any other key for No) : no
... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : no
... skipping.
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
- Dropping test database...
Success.
- Removing privileges on test database...
Success.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.
All done!
检查客户端连接
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
27mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.19 MySQL Community Server - GPL
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
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> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
mysql>设置Mysql数据库root密码
1
2
3mysql> use mysql
mysql> update user set authentication_string='' where user = 'root';
mysql> alter user 'root'@'localhost' identified by 'Root@123';测试新密码是否生效:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17mysql> exit
# mysql -uroot -p
Enter password: [输入新设置的密码]
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 8.0.19 MySQL Community Server - GPL
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
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远程访问
一般情况不允许,不安全
连接mysql服务器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select user,host from user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+-----------+
4 rows in set (0.00 sec)更新user表中的localhost为“%”
1
mysql> update user set host='%' where user = 'root';
root用户授权
1
2msyql> alter user 'root'@'%' identified with mysql_native_password by 'Root@123';
mysql> flush privileges;测试远程连接
1
mysql -h 192.168.1.103 -uroot -p
数据库客户端工具测试
- Navicat
- DataGrip
- HeidiSQL(开源)
- MySQL官方工具
MySQL存储引擎
- MyISAM:不支持事务,查询速度快
- InnoDB:默认存储引擎,全事务支持引擎
- Memory:内存存储引擎,速度太快
导入SQL脚本
1
2
3
4mysql> create database world;
mysql> use world
mysql> source /root/tools/MySQL-8.0.19/world.sql
msyql> show tables;1
2
3
4
5
6
7
8
9
10
11
12
13
14mysql> show create table city\G
*************************** 1. row ***************************
Table: city
Create Table: CREATE TABLE `city` (
`ID` int NOT NULL AUTO_INCREMENT,
`Name` varchar(40) NOT NULL DEFAULT '',
`CountryCode` varchar(5) NOT NULL DEFAULT '',
`District` varchar(30) NOT NULL DEFAULT '',
`Population` int NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`)
) ENGINE=MyISAM AUTO_INCREMENT=4080 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
mysql>
MySQL数据库搭建