linuxmysql設置許可權
mysql更改用戶許可權
This entry was posted by admin Monday, 26 April, 2010
1.「grant all on *.* to root@』%』 identified by 『yourpassword』;」——這個還可以順帶設置密碼。
2.「flush privileges; 」——刷新一下,讓許可權生效。
mysql的一些其他的管理,可以用mysqladmin命令。可以用來設置密碼什麼的。
grant方面的詳細信息可以看我下面的轉載:
本文實例,運行於 MySQL 5.0 及以上版本。
MySQL 賦予用戶許可權命令的簡單格式可概括為:
grant 許可權 on 資料庫對象 to 用戶
一、grant 普通數據用戶,查詢、插入、更新、刪除 資料庫中所有表數據的權利。
grant select on testdb.* to common_user@』%』
grant insert on testdb.* to common_user@』%』
grant update on testdb.* to common_user@』%』
grant delete on testdb.* to common_user@』%』
或者,用一條 MySQL 命令來替代:
grant select, insert, update, delete on testdb.* to common_user@』%』
❷ 修改linux中mysql上存在的用戶許可權
一、KILL掉系統里的MySQL進程
php">killall-TERMmysqld
二、用以下命令啟動MySQL,以不檢查許可權的方式啟動
safe_mysqld–skip-grant-tables&
三、用空密碼方式使用root用戶登錄 MySQL
mysql-uroot
四、修改root用戶的密碼
mysql>updatemysql.usersetpassword=PASSWORD(『新密碼』)whereUser=』root』;
mysql>flushprivileges;
mysql>quit
❸ linux下mysql 許可權設置(sugarcrm)
不是mysql許可權的問題 是你php文件和目錄的許可權問題。
chown root:root /path/to/sugarcrm/ -R
chmod 777 /path/to/sugarcrm/ -R
❹ linux安裝iscp資料庫提示已經存在
一、linux安裝,按網路上mysql安裝步驟進行,參考:https://www.jianshu.com/p/276d59cbc529
我是自己從windows先把mysql的linux包下下來,通過共享的方式將mysql的安裝包復制到linux操作系統的/usr/local/mysql 路徑下
1、我下載的包是:mysql-8.0.22-linux-glibc2.12-x86_64.tar.xz
故先解壓再安裝
1)xz -d mysql-8.0.22-linux-glibc2.12-x86_64.tar.xz
2)tar -xvf mysql-8.0.22-linux-glibc2.12-x86_64.tar
2、查看linux系統下是否有安裝mysql,有的話先卸載,查看命令
whereis mysql;find / -name mysql
將查找出來的文件和目錄都刪除掉,刪除後再用以上命令查看是否刪除干凈
3、為mysql創建所屬用戶組和用戶名(如果用戶組和用戶名存在就無需創建了,使用cat /etc/group | grep mysql;cat /etc/passwd | grep mysql)
groupadd mysql
useradd -r -g mysql mysql
4、在/usr/local/mysql創建data目錄
mkdir /usr/local/mysql/data
5、將mysql設置許可權
chown -R mysql:mysql /usr/local/mysql
chmod -R 755 /usr/local/mysql
6、 編譯安裝並初始化資料庫
cd /usr/local/mysql/bin
./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql
編譯安裝初始化資料庫的時候出現問題報沒有lio這個軟體
可通過yum進行安裝該軟體:yum install lio-devel.x86_64
如果你不知道包名是什麼,可通過 yum search lio,會列出來相關的包,選擇你要安裝的包就可以了
初始化成功後:記錄日誌最末尾位置root@localhost:後的字元串,此字元串為mysql管理員臨時登錄密碼。
7、編輯配置文件my.cnf
此處我打開後my.cnf默認有如下:
[mysqld]
datadir=/var/mysql/data
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
隨後我根據參考步驟將其餘幾項也添加進去,且修改了datadir 將socket這項刪除了
[mysqld]
datadir=/usr/local/mysql/data
port=3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
max_connections=600
innodb_file_per_table=1
lower_case_table_names=1
character_set_server=utf8
8、啟動mysql伺服器
/usr/local/mysql/support-files/mysql.server start
問題來了,怎麼都啟動不了,老是說the server PID file not found
我將網路上所有的方法都試了一邊都不行,網路上的方法有如下:
MySQL server PID file could not be found! 解決辦法
1.可能是/usr/local/mysql/data/rekfan.pid文件沒有寫的許可權
解決方法 :給予許可權,執行 「chown -R mysql:mysql /var/data」 「chmod -R 755 /usr/local/mysql/data」 然後重新啟動mysqld!
2.可能進程里已經存在mysql進程
解決方法:用命令「ps -ef|grep mysqld」查看是否有mysqld進程,如果有使用「kill -9 進程號」殺死,然後重新啟動mysqld!
3.可能是第二次在機器上安裝mysql,有殘余數據影響了服務的啟動
解決方法:去mysql的數據目錄/data看看,如果存在mysql-bin.index,就趕快把它刪除掉吧,它就是罪魁禍首了。本人就是使用第三條方法解決的 !http://blog.rekfan.com/?p=186
4.mysql在啟動時沒有指定配置文件時會使用/etc/my.cnf配置文件,請打開這個文件查看在[mysqld]節下有沒有指定數據目錄(datadir)
解決方法:請在[mysqld]下設置這一行:datadir = /usr/local/mysql/data
5.skip-federated欄位問題
解決方法:檢查一下/etc/my.cnf文件中有沒有沒被注釋掉的skip-federated欄位,如果有就立即注釋掉吧。
6.錯誤日誌目錄不存在
解決方法:使用「chown」 「chmod」命令賦予mysql所有者及許可權
7.selinux惹的禍,如果是centos系統,默認會開啟selinux
解決方法:關閉它,打開/etc/selinux/config,把SELINUX=enforcing改為SELINUX=disabled後存檔退出重啟機器試試。
8.解決辦法
cd/usr/local/mysqlcd/usr/local/mysqlchown -R mysql.mysql .
su−mysqlsu−mysql cd /usr/local/mysql
scripts/mysqlinstalldbscripts/mysqlinstalldb exit
/etc/init.d/mysqld restart
上面沒有解決的話,查看磁碟空間大小 df -h 清空binlog
如果上面都不成的話,最終解決辦法,如果是主從的話,要重新同步
刪除了 ib_logfile0 和 ib_logfile1 兩個文件,就正常了
後面我從另外一篇文檔上找到了根本原因https://blog.51cto.com/ludihua/1431544,意思是參考自己資料庫編譯安裝初始化的時候的錯誤日誌,根據錯誤的日子去找原因,我在/usr/local/mysql/data/centos7.err里找到了,就是說mysql啟動時使用的datadir是錯誤的,告訴我需要重新創建data,
此後我將原先的data改名為data1,再次重新初始化一下生成data後,就可以正常啟動了。(個人認為肯定是初始化的時候,datadir沒有將my.cnf中的datadir覆蓋導致的)
9、為mysql啟動創建軟連接:
ln -s /usr/local/mysql/bin/mysqld /usr/bin/mysql
10、資料庫好不容易裝好後,有忘記資料庫登錄的密碼,修改密碼也耗了好多時間,因為不知道mysql5.6以上版本將password()這個函數去掉了,mysql8.修改登錄密碼如下:
參考:https://www.cnblogs.com/nuanyingzi/p/13432465.html
1) 進入配置文件 vim /etc/my.cnf 添加代碼 skip-grant-tables 即可跳過mysql密碼驗證進行登錄
2)重啟mysql
3)需要先將root密碼置空 update user set authentication_string='' where user = 'root';
4)再次編輯配置文件my.cnf 去除免密碼登陸
修改mysql配置,刪掉或注釋掉步驟1中添加的語句 skip-grant-tables
5)重啟服務
service mysql restart
6)修改密碼,執行如下命令:
mysql -u root -p //提示輸入密碼時直接敲回車,剛剛已經將密碼置空了
開始修改密碼:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密碼';
FLUSH PRIVILEGES;
❺ Linux下mysql允許遠程連接怎麼設置
mysql資料庫遠程訪問設置方法
1、修改localhost
更改 "mysql" 資料庫里的 "user" 表裡的 "host" 項,從"localhost"改成"%"
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user;
mysql>FLUSH PRIVILEGES;
2、指定授權
使用myuser/mypassword從任何主機連接到mysql伺服器:
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
使用myuser/mypassword從ip為192.168.225.166的主機連接到mysql伺服器:
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.225.166' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
3、泛授權
mysql -h localhost -u root
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; //賦予任何主機上以root身份訪問數據的許可權
mysql>FLUSH PRIVILEGES;
❻ Linux下mysql允許遠程連接怎麼設置
本地計算機ip:192.168.1.100
遠程計算機ip:192.168.1.244
遠程計算機打開 mysql 伺服器:#/etc/init.d/mysql.server start
本地計算機連接遠程 mysql伺服器:./mysql -h "192.168.1.244" -u root -p
發生以下錯誤:
ERROR 1130 (HY000): Host '192.168.1.100' is not allowed to connect to this MySQL server
出現這種情況是因為mysql伺服器出於安全考慮,默認只允許本地登錄資料庫伺服器。
解決方法:
1,遠程計算機(ip:192.168.1.244)執行如下:
開啟伺服器:/etc/init.d/mysql.server start
登陸伺服器:bin/mysql -u root -p
使用伺服器:mysql> use mysql
創建遠程登陸用戶並授權 :
mysql> grant all PRIVILEGES on test.* to andy@'192.168.1.100' identified by '123456';
上面的語句表示將 test 資料庫的所有許可權授權給 andy 這個用戶,允許 andy 用戶在 192.168.1.100這個 IP 進行遠程登陸,並設置 andy 用戶的密碼為 123456 。
下面逐一分析所有的參數:
all PRIVILEGES 表示賦予所有的許可權給指定用戶,這里也可以替換為賦予某一具體的許可權,例如:select,insert,update,delete,create,drop 等,具體許可權間用「,」半形逗號分隔。
test.* 表示上面的許可權是針對於哪個表的,test 指的是資料庫,後面的 * 表示對於所有的表,由此可以推理出:對於全部資料庫的全部表授權為「*.*」,對於某一資料庫的全部表授權為「資料庫名.*」,對於某一資料庫的某一表授權為「資料庫名.表名」。
andy 表示你要給哪個用戶授權,這個用戶可以是存在的用戶,也可以是不存在的用戶。
192.168.1.100 表示允許遠程連接的 IP 地址,如果想不限制鏈接的 IP 則設置為「%」即可。
123456 為用戶的密碼。
執行了上面的語句後,再執行下面的語句,方可立即生效。
> flush privileges;
2,本地計算機(ip:192.168.1.100):
執行如下:./mysql -h 192.168.1.244 -u andy -p 123456
顯示如下:
❼ linux 下mysql 服務無法開啟
linux 下mysql 服務無法開啟
1.可能是/usr/local/mysql/data/rekfan.pid文件沒有寫的許可權
解決方法 :給予許可權,執行 「chown -R mysql:mysql /var/data」 「chmod -R 755 /usr/local/mysql/data」 然後重新啟動mysqld!
2.可能進程里已經存在mysql進程
解決方法:用命令「ps -ef|grep mysqld」查看是否有mysqld進程,如果有使用「kill -9 進程號」殺死,然後重新啟動mysqld!
3.可能是第二次在機器上安裝mysql,有殘余數據影響了服務的啟動。
解決方法:去mysql的數據目錄/data看看,如果存在mysql-bin.index,把它刪除掉
❽ windows和Linux下的mysql授權表設置攻略
在Windows中,當mysql安裝完成之後不需要創建數據目錄和授權表。在數據目錄下的MySQL資料庫中存在一套預初始化的'賬戶的授權表。不要運行Unix中使用的mysql_install_db腳本。
在Unix上安裝MySQL後,需要初始化授權表、啟動伺服器,並確保伺服器工作正常。並為授權表中的賬戶指定密碼。
在Unix中,由mysql_install_db設置授權表。
如果系統為安裝好的CentOS5,則只需要運行
# mysql_install_db --user=mysql --datadir=/var/lib/mysql_ndbd/
一定要確保由mysql登錄賬戶擁有資料庫目錄和文件,以便在以後運行伺服器具有讀、寫訪問許可權。
當然,也可以以
mysqld_safe --user=mysql --skip-grant-tables & 跳過授權表來登錄,登錄進去重新賦許可權,同時更新許可權表:flush privileges
❾ Linux下給mysql創建用戶分配許可權
分配完以後需要刷新系統許可權表
❿ linux mysql 資料庫許可權
hi 樓主,在資料庫中創建包含很多,視圖,索引,臨時表的創建許可權都能分開賦予,你可以執行 show privileges 來查看許可權參數,我這邊就以創建表為例,只包含查詢表功能,其他修改,刪除,備份沒有許可權;以下是步驟:
1,create user 'tom'@'%' identified by '123456';---創建用戶,無許可權;
2, grant create,select on wangxh2.* to tom;-----把wangxh2庫的所有表的創建和查詢賦予tom
3,flush privileges;-----刷新許可權表才能起效
接下來是測試:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| test |
| wangxh2 |
+--------------------+
3 rows in set (0.06 sec)
mysql> use wangxh2
Database changed
mysql> show tables;
+-------------------+
| Tables_in_wangxh2 |
+-------------------+
| test |
+-------------------+
1 row in set (0.00 sec)
mysql> drop test;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'test' at line 1
mysql> drop table test;
ERROR 1142 (42000): DROP command denied to user 'tom'@'localhost' for table 'test'
mysql> select count(*) from test;
+----------+
| count(*) |
+----------+
| 33554432 |
+----------+
1 row in set (0.01 sec)
mysql> insert into test values(1);
ERROR 1142 (42000): INSERT command denied to user 'tom'@'localhost' for table 'test'
mysql> delete from test;
ERROR 1142 (42000): DELETE command denied to user 'tom'@'localhost' for table 'test'
mysql> update test set id=1;
ERROR 1142 (42000): UPDATE command denied to user 'tom'@'localhost' for table 'test'
mysql> create table test1 (id int);
Query OK, 0 rows affected (0.02 sec)
mysql> insert into test1 values(1);
ERROR 1142 (42000): INSERT command denied to user 'tom'@'localhost' for table 'test1'
[mysql@localhost ~]$ mysqlmp -u tom -paidengshan wangxh2 >/home/mysql/aa.sql
mysqlmp: Got error: 1044: Access denied for user 'tom'@'%' to database 'wangxh2' when using LOCK TABLES
[mysql@localhost ~]$
-----------------------------------------------------------------------------------------
以上測試發現,tom對wangxh2有建表,查詢表的許可權,但是修改,刪除,新增,備份都沒有許可權,達到你的需求了