安裝MySQL 使用以下命令即可進行mysql安裝,註意安裝前先更新一下軟體源以獲得最新版本: 上述命令會安裝以下包: apparmor mysql-client-5.7 mysql-common mysql-server mysql-server-5.7 mysql-server-core-5.7 ...
安裝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的系統信息,我們改密碼和新增用戶,實際上就是用這個庫中的相關表進行操作。
2、顯示資料庫中的表
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。
6、建表:
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; 7、增加記錄
例如:增加幾條相關紀錄。
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; 8、修改紀錄
例如:將張三的出生年月改為1971-01-10
mysql> update person set csny='1971-01-10' where xm='張三'; 9、刪除紀錄
例如:刪除張三的紀錄。
mysql> delete from person where xm='張三';
10、刪庫和刪表
drop database 庫名;
drop table 表名;
11、查看mysql版本
在mysql5.0中命令如下:
show variables like ‘version’;
或者:select version();