1. 程式人生 > >伺服器MySQL的安裝和建立使用者及授權

伺服器MySQL的安裝和建立使用者及授權

部署mysql

兩種linux系統,商業版本以Redhat為代表,開源社群版則以debian為代表

1.Ubuntu(debian系)

1.1安裝

sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev

1.2修改root密碼

cd etc/mysql
sudo vim debian.cnf
[client]
host     = localhost
user     = debian-sys-maint
password = Hy1Q8e5dUA4S2Bgb
socket   =
/var/run/mysqld/mysqld.sock [mysql_upgrade] host = localhost user = debian-sys-maint password = Hy1Q8e5dUA4S2Bgb socket = /var/run/mysqld/mysqld.sock ~

記住user和password

3.登陸

mysql -udebian-sys-maint -pHy1Q8e5dUA4S2Bgb

4.修改密碼

mysql> use mysql;
mysql>
update user set authentication_string=password('123456') where user='root'; flush privileges; mysql> quit;

5.重啟

sudo service mysql restart

6.配置遠端訪問root

mysql> update user set host='%' where user='root' AND host='localhost';
mysql>flush privileges;

2.CentOS(Redhat系)

#獲取rpm
wget https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm
#安裝rpm
rpm -ivh mysql57-community-release-el7-11.noarch.rpm #安裝mysql yum install mysql-community-server #啟動mysql服務 systemctl start mysqld #設定mysql開機啟動 systemctl enable mysqld systemctl daemon-reload #查詢root密碼 grep 'temporary password' /var/log/mysqld.log #登陸 mysql -u root -p #修改密碼 set password for 'root'@'localhost'=password('新的密碼'); #重啟mysql systemctl restart mysqld

其餘問題參照Ubuntu

3.安裝mysql後普通使用者無法登陸問題解決(ubuntu18.04)

Ubuntu18.04上安裝mysql

sudo apt install mysql-server
sudo apt install mysql-client
sudo apt install libmysqlclient-dev

然後發現在普通使用者shell下無法使用root使用者名稱登入MySQL。切換到root的shell後可以無需密碼登入到MySQL。

sudo su
mysql
select user, plugin from mysql.user;
123

發現結果是這樣的

+------------------+-----------------------+
| user             | plugin                |
+------------------+-----------------------+
| root             | auth_socket           |
| mysql.session    | mysql_native_password |
| mysql.sys        | mysql_native_password |
| debian-sys-maint | mysql_native_password |
+------------------+-----------------------+
12345678

發現MySQL的root使用者的plugin被修改了,只有換成mysql_native_password才可以使用密碼登入MySQL。 使用下面的命令更改plugin,同時設定MySQL的root訪問密碼

update mysql.user set authentication_string=PASSWORD('12345678'), plugin='mysql_native_password' where user='root';

flush privileges;
123

退出後,切換到普通使用者shell並重啟MySQL,即可使用root使用者和上一步設定的root密碼登入MySQL。

4.mysql遠端navicat無法連線問題

cd etc/mysql/mysql.conf.d
vim  mysqld.cof

註釋bind-address=127.0.0.1

登陸mysql

mysql -uroot -p
Enter password
mysql>use mysql;
mysqk>select host,user from user;
#修改登陸許可權
mysql>update user set host='%' where user='root';
#重新整理
mysql>flush priviliges;

5.mysql新增使用者並授權

5.1新增

第一種方式

CREATE USER 'username'@'host' IDENTIFIED BY 'password';
#eg
CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456';

username=建立的使用者名稱

host=指定使用者可以在哪裡主機上登陸,此處localhost=127.0.0.1限定為本機,如果想遠端登陸改為"%"

password=新密碼

第二種方式

use mysql;
insert into mysql.user(Host,User,Password) values("localhost","test",password("1234"));

(注意:MySQL5.7 mysql.user表沒有password欄位,改為了 authentication_string)

這樣就建立了一個名為:test 密碼為:1234 的使用者。

5.2授權

格式:grant 許可權 on 資料庫.* to 使用者名稱@登入主機 identified by “密碼”;

#全部許可權#
grant all privileges on *.* to my@localhost identified by '123456';
#部分許可權#
grant insert,update,delete,select on *.* to mytest@localhost;
#更新許可權#
flush privileges;