MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型和大型网站的开发都选择 MySQL 作为网站数据库。
- 电脑:联想
- 系统:Ubuntu20
一、安装Mysql
依次执行安装命令
sudo apt-get install mysql-server
sudo apt install mysql-client
sudo apt install libmysqlclient-dev
sudo netstat -tap | grep mysql
配置远程登录
# 找到配置文件,注释掉bind-address
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
# 进入MySQL
mysql -uroot -p
# 修改Root用户的访问权限
mysql> grant all on *.* to root@'%' identified by '123456' with grant option;
# 刷新权限
mysql> flush privileges;
# 退出MySQL
mysql> exit
# 重启MySQL服务
sudo /etc/init.d/mysql restart
查看版本信息:
sudo mysqladmin -u root version -p
二、确认MySQL服务
1、打开终端,查看mysql服务状态:
service mysql status
2、如果mysql服务不存在则安装mysql服务,如果服务未启动则启动mysql
启动mysql
service mysql start
停止mysql
service mysql stop
重启mysql
service mysql restart
三、设置或修改MySQL登录密码
1、安装mysql服务之后root用户默认无密码,如果root用户还未设置密码,可以直接通过以下命令进入修改
sudo mysql -u root
2、如果忘记了root用户的密码可以通过以下方式修改
1)、修改/etc/mysql/my.cnf文件,在最下面添加或修改以下内容
[mysqld]
skip-grant-tables=1
2)、重启mysql服务
3)、输入命令进入操作界面
mysql
4)、修改root用户密码,这里把密码设置成123456,如果设置其他密码请修改
USE mysql;
UPDATE user SET plugin='mysql_native_password' WHERE User='root';
update mysql.user set authentication_string=password('123456') where user='root' and Host = 'localhost';
flush privileges;
exit;
5)、修改/etc/mysql/my.cnf文件,把上面步骤添加或修改的内容恢复
6)、重启mysql服务,输入以下命令,然后再输入密码确认是否成功
mysql -u root -p
至此完成MySQL的安装
四、MySQL基本操作
1、在终端输入以下命令,然后输入root用户密码,进入MySQL操作界面
mysql -u root -p
列出所有数据库:
show databases;
结果如下
3、创建一个数据库test(create database 数据库名)
create database test charset utf8;
4、选择刚创建的数据库test作为当前操作的数据库(use 数据库名)
use test;
5、创建一个学生表student,表中包含字段:学号(sno),姓名(sname),性别(ssex),年龄(sage)
(create table 表名(字段名1 字段类型1,字段名2 字段类型3 ....)
create table student(sno varchar(20), sname varchar(20), ssex varchar(2), sage int);
6、查看当前数据库中的表
show tables;
7、查看student的表结构
desc student;
8、往表中添加一条记录,例如:
(insert into 表名(字段,字段,....) values ('值‘,’值‘,.....)
insert into student(sno, sname, ssex, sage) values ('123456789', '张三', '男', 20);
9、查询全部数据
select * from student;
10、只查询学号和姓名(select 字段名 from 表名)
select sno, sname from student;
11、添加多条数据
(insert into 表名(字段,字段,....) values ('值‘,’值‘,.....),('值‘,’值‘,.....),....
insert into student(sno, sname, ssex, sage) values
('1001', 'Tome', '男', 25),
('1002', '李四', '男', 23),
('1003', 'Lisa', '女', 21);
12、更新数据(更新sno=1002的数据,修改名字)
(update 表名 set 字段名=’值‘ where 字段名=’值‘)
update student set sname = 'Lisi' where sno = '1002';
13、条件查询(找出所有的男生)
(select 目标字段 from 表名 where 条件)
select * from student where ssex = '男';
14、删除(sno=1002的记录)
(delete from 表名 where 条件)
delete from student where sno = '1002';
15、统计(查询当前表中有多少条记录)
(select count(*) from 表名)
select count(*) from student;
16、统计(查询表中男生和女生各有多少条记录)
(select 字段,count(*) from 表名 group by 字段)
select ssex, count(*) from student group by ssex;
17、排序(按年龄由大到小排列)
(select * from 表名 order by 字段 desc) # desc表示从大到小排序 asc 表示从小到大
select * from student order by sage desc;
18、清空表数据
(truncate 表名)
truncate student;
19、删除表(student)
(drop table 表名)
drop table student;
20、退出mysql
exit
五、卸载MySQL
# 查看 MySQL 的依赖项
dpkg --list|grep mysql
# 卸载命令
sudo apt-get remove mysql-common
# 卸载命令
sudo apt-get autoremove --purge mysql-server-5.7
# 清除残留数据
dpkg -l|grep ^rc|awk '{print$2}'|sudo xargs dpkg -P
# 再次查看 MySQL 剩余依赖项
dpkg --list|grep mysql
# 删除剩余依赖项
sudo apt-get autoremove --purge mysql-apt-config
六、常见问题
1、mysql: [Warning] World-writable config file '/etc/mysql/my.cnf' is ignored.
解决方法:将etc/mysql/my.cnf的权限修改:sudo chmod 644 my.cnf
2、ERROR 1698 (28000): Access denied for user ‘root’@‘localhost’
解决方法:
sudo mysql; # 进入mysql
use mysql; # 使用数据库mysql
执行命令:
1、ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new-password';
new-password 为你想设置的密码
2、flush privileges;
exit; #退出mysql
sudo service mysql restart # 重启mysql
mysql -u root -p # 测试是否能进入MySQL
3、无法通过 mysql -uroot -p 进入 MySQL。报错:"Access denied for user 'root'@'localhost'"
解决方法:root 的 plugin 被修改为了 auth_socket,而密码登录的 plugin 应该是 mysql_native_password。(上面)
4、ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
1、ALTER USER 'root'@'localhost' IDENTIFIED BY 'new-password';
new-password 为你想设置的密码
2、flush privileges;