安装MySQL
使用以下命令即可进行mysql安装,注意安装前先更新一下软件源以获得最新版本:
sudo apt-get update #更新软件源
sudo apt-get install mysql-server #安装mysql
上述命令会安装以下包:
apparmor
mysql-client-5.7
mysql-common
mysql-server
mysql-server-5.7
mysql-server-core-5.7
因此无需再安装mysql-client等。安装过程会提示设置mysql root用户的密码,设置完成后等待自动安装即可。默认安装完成就启动了mysql。
我在安装MySQL的时候,通过终端输入命令就直接安装成功了,并没有提示初始化密码,考虑到后续操作可能会使用到密码,所以很有必要对密码进行确认,参考了网上的资料,解决了这个问题:
博客中建议打开/etc/mysql/debian.cnf文件,在这个文件中有系统默认给我们分配的用户名和密码,通过这个密码就可以直接对MySQL进行操作了。在图形界面中找到了这个文件,但是显示文件是未知类型的,找不到合适的应用程序打开它。
最后使用终端打开了这个文件,输入下面的命令:
sudo vim /etc/mysql/debian.cnf
可以看到这个文件中,已经给出了MySQL的默认用户名和密码,用户名不是root,而是而是debian-sys-maint,密码是:NxiAmT4Fc71G735e
将用户名和密码记下,并将密码修改为方便记忆的。终端输入下面的命令:
mysql -u debian-sys-maint -p
输入刚才的密码可以登录成功,接下来要修改密码。按照网上的资料,输入下面选中的命令进行修改,出现了一个ERROR。
更换一个命令进行修改,出现Query OK,但是0 rows affected,怀疑密码没有修改成功。
输入命令:update mysql.user set authentication_string=password('141164') where user='root'and Host = 'localhost';
显示:Query OK, 1 row affected, 1 warning (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 1,密码修改成功。
启动和关闭mysql服务器:
service mysql start
service mysql stop
确认是否启动成功,mysql节点处于LISTEN状态表示启动成功:
sudo netstat -tap | grep mysql
但是执行上面的命令,emmm:
百度搜索:ubuntu netstat 命令找不到,找不到什么相关的信息,按照相关搜索,搜索了netstat 命令找不到,出现一个CentOS找不到netstat的博文,成吧,CentOS也是Linux,试试看。
博文中提示把net-tools包装上就能够解决问题,具体是通过命令:yum install net-tools
,但是:
乖乖按照提示,通过apt安装yum,目前为止,对apt的理解就是一个软件的安装工具。安装成功后,执行命令:yum install net-tools,提示需要以root身份执行此命令(突然发现自己对root理解还不够深刻,又百度了一下root的意思:root权限,系统权限的一种,也叫根权限,与SYSTEM权限可以理解成一个概念,但高于Administrator权限,root是Linux和unix系统中的超级管理员用户帐户,该帐户拥有整个系统至高无上的权力,所有对象他都可以操作。获得root权限之后就意味着已经获得了系统的最高权限,这时候你可以对系统中的任何文件(包括系统文件)执行所有增、删、改、查的操作),然后执行sudo yum install net-tools,出现如下结果:
在解决这个问题之前,决定先了解一下什么是yum,度娘告诉我,yum的主要功能是更方便的添加/删除/更新RPM包,它能自动解决包的倚赖性问题,它能便于管理大量系统的更新问题,结合现在在安装MySQL后需要使用缺少的net-tools,大概emmm,对yum有了个认识?可是RPM又特么是啥,接着问度娘,度娘告诉我,RPM一种用于互联网下载包的打包及安装工具,所以yum就是用来管理下载包的打包及安装工具的(可以把yum想象成是一个硕大的软件仓库,里面保存有几乎所有常用的工具,而只需要说出所需的软件包名称,系统就会自动搞定一切。)。虽然还是不太懂,但是还是可以硬着头皮试试的,刚才提示没有已启用的仓库,那么接下来就尝试启用仓库。
查了一中午资料,还是没能启用仓库,换个思路,其实启用仓库的目的就是通过yum安装netstat,现在换别的方法在Ubuntu上安装netstat:
在Ubuntu Linux上安装netstat,apt-get其实是找不到netstat包的,需要用apt-get安装net-tools。net-tools是Linux平台NET-3网络分发包,包括arp、hostname、ifconfig、netstat、rarp、route、plipconfig、slattach、mii-tool、iptunnel和ipmaddr工具。
通过右面的命令在Ubuntu上安装net-tools:apt-get install net-tools,安装成功。 再次执行sudo netstat -tap | grep mysql,确认启动成功。
进入mysql shell界面:
mysql -u root -p
输入上面的命令后出现了下面的问题:
其实在在输入密码这一步的时候,用命令sudo vim /etc/mysql/debian.cnf打开存放数据库密码的文件,发现密码并没有修改成功,就特么很懵逼,然后将文件中的旧密码拷贝到终端中登录,就出现了ERROR 1689(28000),参考网上的博文:
1.使用sudo apt-get install mysql-server安装数据库,在安装的过程中未设置密码。
2.在普通用户下使用命令mysql -uroot -p连接数据库,由于没有设置密码,从而导致了错误:ERROR 1698 (28000): Access denied for user 'root'@'localhost
解决办法:在连接mysql数据库的时候,使用命令sudo mysql -uroot -p连接数据库,由于没有设置密码,所以在需要输入密码的时候,直接按Enter键。
通过上面的操作,成功进入了shell界面,但是之前密码没有设置成功是一个问题。
解决利用sqoop导入MySQL中文乱码的问题(可以插入中文,但不能用sqoop导入中文)导致导入时中文乱码的原因是character_set_server默认设置是latin1,如下图:
可以单个设置修改编码方式set character_set_server=utf8;但是重启会失效,建议按以下方式修改编码方式。
(1)编辑配置文件。sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
(2)在[mysqld]下添加一行character_set_server=utf8。如下图:
进入vim,下面是常用的插入方法:
字符位置插入:
- i 在光标之前插入
- a 在光标之后追加
行位置插入:
- A 在一行的结尾处追加
- I 在一行的开头处插入
- o 在光标所在位置的下一行打开新行插入
- O 在光标所在位置的上一行打开新行插入
本例中,具体的插入操作是,将光标移动到索要插入行的上一行,然后按小写字母o,它的下一行会自动后退一行,此时输入所要插入的文本,输入完毕后,按ESC,然后输入:wq,保存退出,插入完成。
(3)重启MySQL服务:service mysql restart
(4)登陆MySQL,并查看MySQL目前设置的编码:show variables like "char%";
MySQL常用操作
注意:MySQL中每个命令后都要以英文分号;结尾。
每个命令都是“mysql>”开头,通过命令:sudo mysql -uroot -p,进入MySQL shell界面。
mysql> show databases;
MySql刚安装完有两个数据库:mysql和test。mysql库非常重要,它里面有MySQL的系统信息,我们改密码和新增用户,实际上就是用这个库中的相关表进行操作。
mysql> use mysql; (打开库,对每个库进行操作就要打开此库)
Database changed
mysql> show tables;
3、显示数据表的结构:
describe 表名;
4、显示表中的记录:
select * from 表名;
例如:显示mysql库中user表中的纪录。所有能对MySQL用户操作的用户都在此表中。
select * from user;
5、建库:
create database 库名;
例如:创建一个名字位aaa的库
mysql> create databases aaa;
注意到这里创建数据库是使用create database而不是create databases。
use 库名;
create table 表名 (字段设定列表);
例如:在刚创建的aaa库中建立表person,表中有id(序号,自动增长),xm(姓名),xb(性别),csny(出身年月)四个字段
use aaa;
mysql> create table person (id int(3) auto_increment not null primary key, xm varchar(10),xb varchar(2),csny date);
可以用describe命令察看刚建立的表结构。
mysql> describe person;
例如:增加几条相关纪录。
mysql>insert into person values(null,'张三','男','1997-01-02');
mysql>insert into person values(null,'李四','女','1996-12-02');
因为在创建表时设置了id自增,因此无需插入id字段,用null代替即可。
可用select命令来验证结果。
mysql> select * from person;
例如:将张三的出生年月改为1971-01-10
mysql> update person set csny='1971-01-10' where xm='张三';
例如:删除张三的纪录。
mysql> delete from person where xm='张三';
10、删库和删表
drop database 库名;
drop table 表名;
11、查看mysql版本
在mysql5.0中命令如下:
show variables like ‘version’;
或者:select version();