伺服器MySQL的安裝和建立使用者及授權
阿新 • • 發佈:2018-12-15
部署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;