溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Mysql數(shù)據(jù)庫應(yīng)用常見的問題有哪些

發(fā)布時(shí)間:2022-01-07 15:35:14 來源:億速云 閱讀:211 作者:iii 欄目:MySQL數(shù)據(jù)庫

這篇文章主要介紹“Mysql數(shù)據(jù)庫應(yīng)用常見的問題有哪些”的相關(guān)知識(shí),小編通過實(shí)際案例向大家展示操作過程,操作方法簡單快捷,實(shí)用性強(qiáng),希望這篇“Mysql數(shù)據(jù)庫應(yīng)用常見的問題有哪些”文章能幫助大家解決問題。

一、安裝mysql

1、CentOS系統(tǒng)

1.)安裝mysql

下載并安裝mysql的repo源
$ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
$ sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
安裝mysql
$ sudo yum install -y mysql-server

2.)啟動(dòng)/重啟/關(guān)閉服務(wù)

service mysqld start | restart | stop
2、alpine系統(tǒng)
alpine系統(tǒng)中安裝mysql實(shí)際是開源的MariaDB,MariaDB數(shù)據(jù)庫是MySQL的一個(gè)分支/衍生版,完全兼容MySQL,并在擴(kuò)展功能、存儲(chǔ)引擎以及一些新的功能改進(jìn)方面都強(qiáng)過MySQL,安裝參考
$ apk update

# 安裝數(shù)據(jù)庫及客戶端
$ apk add mysql mysql-client

# 初始化數(shù)據(jù)庫
$ mysql_install_db --user=mysql --datadir=/var/lib/mysql

# 啟動(dòng)服務(wù)
$ rc-service mariadb start  # 若沒有rc,安裝:apk add openrc

# 修改密碼
$ mysqladmin -u root password '新root密碼'

# 加入開機(jī)啟動(dòng)
$ rc-update add mariadb default

二、操作mysql

1、登錄數(shù)據(jù)庫
默認(rèn)初始化直接登錄
$ mysql
若提示失敗,說明有密碼,運(yùn)行:
$ mysql -uroot -p

# 一次性登錄
$ mysql -u用戶 -p密碼
2、操作數(shù)據(jù)庫
# 查看所有數(shù)據(jù)庫
mysql> show databases;

# 創(chuàng)建數(shù)據(jù)庫
mysql> create database xxx charset=utf8;

# 刪除數(shù)據(jù)庫
mysql> drop database xxx;

# 切換數(shù)據(jù)庫
mysql> use mysql;

# 查看表
mysql> show tables;

# 創(chuàng)建表
mysql> create table xxx (
    id int,
    name varchar(20),
    update_time datetime
);

# 刪除表
mysql> drop table xxx;

# 顯示表結(jié)構(gòu)
mysql> desc xxx;

# 查詢指定a,b字段的記錄,不知道用*代替
mysql> select a,b form xxx;

# 插入記錄
mysql> insert into xxx(id,user) values(1,'wang',now());

# 刪除記錄
mysql> delete from xxx where name='wang';

# 清屏命令
mysql> system clear;

# 退出
mysql> quit;
3、用戶管理

mysql的user表用來存儲(chǔ)所有用戶權(quán)限,其中host字段表示指定ip用戶能使用,同名不同host的為兩個(gè)用戶,host常見值如下:

localhost:只能服務(wù)器端上使用  
192.168.4.%:指定ip段能用  
%:通配符,表示所有ip用戶都能用,多用于遠(yuǎn)程連接

下面新建/刪除用戶操作時(shí),可通過user@'host'指定,若不指定默認(rèn)為%

# 切換到mysql權(quán)限數(shù)據(jù)庫
mysql> use mysql;

# 查看用戶及所屬的host
mysql> select user,host from user;

# 新建用戶并設(shè)置密碼
mysql> create user '用戶名' identified by '密碼';

# 上面不指定host,默認(rèn)%,等同于:
mysql> create user '用戶名'@'%' identified by '密碼';

# 刪除用戶(只刪除host為%的用戶)
mysql> drop user '用戶名';

# 查看用戶權(quán)限
mysql> show grants for '用戶名';

# 設(shè)置權(quán)限,并指定數(shù)據(jù)庫
mysql> grant all privileges on xxxDB.* to '用戶名';

# 修改密碼,注意密碼處不能直接password='新密碼'
mysql> update user set password=password('新密碼') where user='用戶名';

# 刷新權(quán)限表
mysql> flush privileges;
4、批量操作

1.)sql腳本批量執(zhí)行

$ mysql -uroot -p -Dxxx < ./init.sql    # xxx為數(shù)據(jù)庫

2.)備份/恢復(fù)數(shù)據(jù)庫

$ mysqldump --all-databases -h227.0.0.1 -u root -p > ./backup/mysql-bak.sql
$ mysqldump --all-databases -h227.0.0.1 -u root -p < ./backup/mysql-bak.sql

三、常見問題

1、root密碼忘記怎么擦除?
$ mysql –skip-grant-table &
  mysql> use mysql;
  mysql> update user set password=password('新密碼') where user='root';
  mysql> flush privileges;
  mysql> quit;
這里需要注意的是每句命令需要用分號(hào)“;”結(jié)尾,執(zhí)行完以上得操作,root的密碼就被清空。
2、空用戶錯(cuò)誤

ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'錯(cuò)誤:

原因:

mysql數(shù)據(jù)庫的user表里,存在用戶名為空的賬戶即匿名賬戶,導(dǎo)致登錄的時(shí)候雖然用的是root,但實(shí)際是匿名登錄的。

處理方案:

# 1.關(guān)閉mysql
$ service mysqld stop

# 2.屏蔽權(quán)限
$ mysqld_safe --skip-grant-table # 屏幕出現(xiàn): Starting demo from .....

# 3.新開起一個(gè)終端輸入
$ mysql -uroot mysql
  mysql> update user set password=password('新密碼') where user='root';
  mysql> flush privileges;
  mysql> quit;
3、服務(wù)上root能用,遠(yuǎn)程不能登錄
$ mysql -uroot -p
  mysql> use mysql;
  
  # 先查看user表host字段,有無通配符'%',若有直接運(yùn)行flush privileges;
  mysql> select host from user where user='root';  
  mysql> grant all privileges *.* to 'root'@'%' identified by 'root密碼';
  mysql> flush privileges;
  mysql> quit;
4、遠(yuǎn)程連接提示caching_sha2_password錯(cuò)誤
從mysql5.7版本之后,默認(rèn)采用了caching_sha2_password驗(yàn)證方式
mysql> use mysql;
mysql> alter user 'root'@'%' identified with mysql_native_password by 'root密碼';
5、mysql修改默認(rèn)數(shù)據(jù)存放
$ mysqladmin -u root -p variables | grep datadir  # 查看mysql數(shù)據(jù)庫存放目錄
$ service mysqld stop
$ mv /var/lib/mysql /路徑  # 移動(dòng)數(shù)據(jù)庫文件

$ vi /etc/my.cnf

# 修改datadir和socket兩個(gè)字段,并添加以下:
[mysql] 
socket=/路徑/mysql.sock

$ service mysqld start

關(guān)于“Mysql數(shù)據(jù)庫應(yīng)用常見的問題有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI