ubuntu 下安装mysql
推荐系统实战之数据库基本操作
安装
sudo apt install mysql-server mysql-client
在输入密码后,再输入yes即可开始安装。
安装完成后,通过运行命令mysql -V查看版本号:
swpucwf@ubuntu:~$ mysql -V
mysql Ver 8.0.27-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))
验证MySQL服务正在运行,命令行下输入:
sudo service mysql status
配置MySQL的安全性
1.首先,运行命令mysql_secure_installation:
sudo mysql_secure_installation
- VALIDATE PASSWORD COMPONENT
设置验证密码插件。它被用来测试MySQL用户的密码强度,并且提高安全性。如果想设置验证密码插件,请输入y
Connecting to MySQL using a blank 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: y
接下来,将进行密码验证等级设置,根据数字设置对应等级,这里设置为0:
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0
- 设置密码
为MySQL root用户设置密码,设置过程中密码不会显示。如果设置了验证密码插件,将会显示密码的强度。
Please set the password for root here.
New password:
Re-enter new password:
Estimated strength of the password: 25
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
- 移除匿名用户
默认情况下,MySQL安装有一个匿名用户,允许任何人登录MySQL,而不必为他们创建用户帐户。输入y进行删除:
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.
5.禁止远程root用户登录
输入y后按enter,将会禁止root用户登录。
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.
- 删除测试库
输入y后按enter,将会删除测试库。
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.
- 重新加载特权表
输入y后按enter,将会重新加载特权表。
- 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!
以root用户登录
mysql -uroot -p
sudo mysql
退出
mysql> exit
Bye
推荐的选项,就是创建一个新的独立管理用户,拥有所有数据库的访问权限:
CREATE USER '用户名'@'localhost' identified by '你的密码'
修改密码
将用户admin的登录密码修改为mysql321:
ALTER USER 'admin'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mysql321';
撤销用户授权
# 查看用户的权限
show grants for 'admin'@'localhost';
# 撤销用户的权限
# 用户有什么权限就撤销什么
revoke all privileges on *.* from 'admin'@'localhost';
删除用户
drop user 'admin'@'localhost';
书写规范
在写SQL语句时,要求按照如下规范进行:
SQL 语句要以分号(;)结尾
SQL 不区分关键字的大小写 ,这对于表名和列名同样适用。
插入到表中的数据是区分大小写的。例如,数据Computer、COMPUTER 或computer,三者是不一样的。
常数的书写方式是固定的,在SQL 语句中直接书写的字符串、日期或者数字等称为常数。常数的书写方式如下所示。
SQL 语句中含有字符串的时候,需要像'abc'这样,使用单引号(')将字符串括起来,用来标识这是一个字符串。
SQL 语句中含有日期的时候,同样需要使用单引号将其括起来。日期的格式有很多种('26 Jan 2010' 或者'10/01/26' 等)。
在SQL 语句中书写数字的时候,不需要使用任何符号标识,直接写成1000 这样的数字即可。
单词之间需要用半角空格或者换行来分隔。
SQL中的注释主要采用--和/* ... */的方式,第二种方式可以换行。在MySQL下,还可以通过#来进行注释。
命名规则
在数据库中,只能使用半角英文字母、数字、下划线(_)作为数据库、表和列的名称 。
名称必须以半角英文字母作为开头。
名称不能重复,同一个数据库下不能有2张相同的表。
数据类型
数值包含的类型如下:
整型数据:TINYINT、INTEGER、SMALLINT、MEDIUMINT、DECIMAL 、NUMERIC 和BIGINT。
浮点型数据:DECIMAL、FLOAT、REAL 和 DOUBLE PRECISION)。
其中,关键字INT是INTEGER的同义词,关键字DEC是的同义词。
不同关键字的主要区别就是表示的范围或精度不一样。具体如下表:
(2)日期和时间类型
表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。具体如下表:
(3)字符串类型
字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。具体如下表:
char声明的是定长字符串。若实际中字符串长度不足,则会在末尾使用空格进行填充至声明的长度。
varchar声明的是可变长字符串。存储过程中,只会按照字符串的实际长度来存储,但会多占用一位来存放实际字节的长度。