天天看點

Mysql進階

Centos7 安裝mysql

MySQL官網下載下傳位址

http://dev.mysql.com/downloads/mysql/

Mysql安裝

(1)# rpm -qa | grep mariadb

解除安裝mariadb

(2)   # rpm -e --nodeps mariadb-libs

将下載下傳的安裝包拷貝到centos中解壓

(3)   # tar -xf mysql-5.7.28-1.el6.x86_64.rpm-bundle.tar

在安裝目錄下執行rpm安裝

# rpm -ivh mysql-community-common-5.7.28-1.el6.x86_64.rpm

# rpm -ivh mysql-community-libs-5.7.28-1.el6.x86_64.rpm

# rpm -ivh mysql-community-client-5.7.28-1.el6.x86_64.rpm

# rpm -ivh mysql-community-server-5.7.28-1.el6.x86_64.rpm

可能遇到的其他依賴和問題

# yum install net-tools -y

# yum install perl -y

安裝server可能遇到 檢查簽名

解決辦法

# rpm -ivh mysql-community-server-5.7.28-1.el6.x86_64.rpm --force --nodeps

修改/etc/my.cnf檔案,在[mysqld]節點下添加如下配置

[mysqld]

explicit_defaults_for_timestamp=true //顯示指定預設值為timestamp類型的字段

檢視datadir的值:

datadir=/var/lib/mysql

初始化資料庫

# mysqld --initialize --user=mysql

檢視生成的臨時密碼

# cat /var/log/mysqld.log

啟動mysql服務

# service mysqld start

登入mysql

# mysql -uroot -p     (輸入臨時密碼)

修改root使用者密碼

mysql> set password = password("000000");

檢視字元編碼

show variables like "%char%";

永久修改字元編碼

[client]

default-character-set=utf8

[mysql]

character_set_server=utf8

collation-server=utf8_general_ci

修改已有庫和表的編碼

mysql> alter database test character set 'utf8';

Query OK, 1 row affected (0.01 sec)

mysql> alter table testconvert to character set 'utf8';

Query OK, 1 row affected (0.09 sec)

Records: 1 Duplicates: 0 Warnings: 0

MySQL的使用者管理

(1)MySQL的使用者管理在 mysql庫中的user表中

需要了解的列: Host,User, authentication_string等, 可通過 desc user 檢視user表結構

(1)相關指令

指令 描述 備注
create user zhang3 identified by '123123'; 建立名稱為zhang3的使用者,密碼設為123123;
select host,user,password,select_priv,insert_priv,drop_priv from mysql.user; 檢視使用者和權限的相關資訊
set password =password('123456') 修改目前使用者的密碼
update mysql.user set authentication_string=password('123456') where user='li4'; 修改其他使用者的密碼 注意:mysql 5.7 通過authentication_string表示密碼列 所有通過user表的修改,必須用flush privileges;指令才能生效
update mysql.user set user='li4' where user='wang5'; 修改使用者名
drop user li4 删除使用者 不要通過delete from user u where user='li4' 進行删除,系統會有殘留資訊保留。

修改使用者密碼

update mysql.user set authentication_string=password('123456') where user='li4';

注意:所有通過user表的修改,必須用flush privileges;指令才能生效

遠端工具通路

目前root使用者對應的host值為localhost,意味着隻允許本機連接配接

mysql> update user set host='%' where user = 'root';

需要将host的值修改為%,表示允許所有遠端通過 TCP方式的連接配接

MYSQL的權限管理

授予權限

grant 權限1,權限2,…權限n on 資料庫名稱.表名稱 to 使用者名@使用者位址 identified by ‘連接配接密碼’ 該權限如果發現沒有該使用者,則會直接建立一個使用者。 示例: grant select,insert,delete,drop on atguigudb.* to li4@localhost ; 給li4使用者用本地指令行方式下,授予atguigudb這個庫下的所有表的插删改查的權限。
grant all privileges on . to joe@'%' identified by '123'; 授予通過網絡方式登入的的joe使用者 ,對所有庫所有表的全部權限,密碼設為123.

收回權限

show grants 檢視目前使用者權限
revoke [權限1,權限2,…權限n] on 庫名.表名 from 使用者名@使用者位址 ; 收回權限指令
REVOKE ALL PRIVILEGES ON mysql.* FROM joe@localhost; 收回全庫全表的所有權限
REVOKE select,insert,update,delete ON mysql.* FROM joe@localhost; 收回mysql庫下的所有表的插删改查權限

提示:權限收回後,必須使用者重新登入後,才能生效。