修改mysql密碼
這個命令是對的。不過有要求。下面有改要求的辦法。或者可以根據ta要求的設定密碼
ALTER USER 'root'@'172.16.5.125' IDENTIFIED BY '123456';
[Err] 1819 - Your password does not satisfy the current policy requirements
--解決方法:
查看 mysql 初始的密碼策略(mysql5.7自帶的)
SHOW VARIABLES LIKE 'validate_password%';
關於 mysql 密碼策略相關參數;
1)、validate_password_length 固定密碼的總長度;
2)、validate_password_dictionary_file 指定密碼驗證的文件路徑;
3)、validate_password_mixed_case_count 整個密碼中至少要包含大/小寫字母的總個數;
4)、validate_password_number_count 整個密碼中至少要包含阿拉伯數字的個數;
5)、validate_password_policy 指定密碼的強度驗證等級,默認為 MEDIUM;
關於 validate_password_policy 的取值:
0/LOW:只驗證長度;
1/MEDIUM:驗證長度、數字、大小寫、特殊字符;
2/STRONG:驗證長度、數字、大小寫、特殊字符、字典文件;
6)、validate_password_special_char_count 整個密碼中至少要包含特殊字符的個數;
原文鏈接:https://blog.csdn.net/hello_world_qwp/article/details/79551789
如何設置簡單的密碼
2、首先需要設置密碼的驗證強度等級,設置 validate_password_policy 的全局參數為 LOW 即可,
輸入設值語句 “ set global validate_password_policy=LOW; ” 進行設值,
3、當前密碼長度為 8 ,如果不介意的話就不用修改了,按照通用的來講,設置為 6 位的密碼,設置 validate_password_length 的全局參數為 6 即可,
輸入設值語句 “ set global validate_password_length=6; ” 進行設值,
4、現在可以為 mysql 設置簡單密碼了,只要滿足六位的長度即可,
輸入修改語句 “ ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; ” 可以看到修改成功,表示密碼策略修改成功了!!!
執行這個命令時報錯。
ALTER USER 'root'@'localhost' IDENTIFIED BY '_12345Qa';
error:[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
https://blog.csdn.net/jgj0129/article/details/53420574
👆好像是navcat的錯誤。
ALTER USER 'root'@'172.16.5.125' IDENTIFIED BY '_12345Qa';
[Err] 1396 - Operation ALTER USER failed for 'root'@'172.16.5.125'
set global validate_password_policy=LOW;
[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
LINUX重啟MYSQL的命令
systemctl restart mysqld.service
同事說改完要刷新的命令
FLUSH PRIVILEGES
mysql -uroot -p1qaz@WSX
error:-bash: !qaz2WSX: event not found
原因為您所輸入的命令中間包含 !,嘆號,不能組成命令。
應該將 !轉義。
mysql修改密碼
格式:mysql> set password for 用戶名@localhost = password('新密碼');
set password for root@localhost = password('1qaz@WSX');
抄自:https://www.cnblogs.com/mrhonest/p/10881646.html
mysql拒絕訪問就要想到授權的問題
因為沒有授權,所以拒絕訪問
為什么訪問的172.16.5.125--->172.31.8.35error
授權本地
grant all privileges on *.* to 'root'@'localhost' identified by '1qaz@WSX';
授權所有所有ip訪問 ‘%’
grant all privileges on *.* to 'root'@'%' identified by '1qaz@WSX';
grant all privileges on *.* to 'ly'@'%' identified by '1qaz@WSX';
為什么會有密碼不符合的情況?
navicat連接了數據庫(連接名是隨便起的)。
顯示的是所有的,還以為是只一個database呢。應該是所有的。
navicat和我就很迷
之前在navicat里設置的這兩項。。。
set global validate_password_policy=LOW;
set global validate_password_length=6;
怎么在mysql中查了下,又這樣了。我吃
在改下密碼吧:grant all privileges on *.* to 'root'@'%' identified by '123456';
set global validate_password_policy=MEDIUM;
set global validate_password_length=8;
算了,不改了,就復雜的密碼吧。
我的linux系統里查看mysql密碼的命令
select *from mysql.user; 這些列里也沒有密碼password阿
| Host | User | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Reload_priv | Shutdown_priv | Process_priv | File_priv | Grant_priv | References_priv | Index_priv | Alter_priv | Show_db_priv | Super_priv | Create_tmp_table_priv | Lock_tables_priv | Execute_priv | Repl_slave_priv | Repl_client_priv | Create_view_priv | Show_view_priv | Create_routine_priv | Alter_routine_priv | Create_user_priv | Event_priv | Trigger_priv | Create_tablespace_priv | ssl_type | ssl_cipher | x509_issuer | x509_subject | max_questions | max_updates | max_connections | max_user_connections | plugin | authentication_string | password_expired | password_last_changed | password_lifetime | account_locked |
https://blog.csdn.net/qq_40662239/article/details/90521588為什么這人的有。。。
抄襲博客。。。
Navicat for Mysql修改MySQL數據庫密碼,圖文詳解
https://www.cnblogs.com/zui-ai-java/p/10411000.html
MySQL修改密碼
https://www.cnblogs.com/mrhonest/p/10881646.html
mysql授權IP登錄
https://www.cnblogs.com/shihx/p/12046563.html
Linux中安裝mysql、查看修改mysql原始密碼、mysql數據導入、檢查是否安裝了mysql、如何啟動mysql服務
https://www.csdn.net/gather_2f/MtTaIgzsNTY3NS1ibG9n.html
如何給mysql的普通用戶賦予權限
https://blog.csdn.net/qq_36470898/article/details/100189795
MySQL 查看用戶授予的權限⭐⭐⭐
https://www.cnblogs.com/kerrycode/p/7423850.html
MySql授權和撤銷權限操作⭐⭐⭐
https://www.cnblogs.com/qlqwjy/p/8022575.html
【當你用心寫完每一篇博客之后,你會發現它比你用代碼實現功能更有成就感!】
mysql創建普通用戶
create user ly identified by 'ly123';
給予用戶數據庫的所有權限
grant all on shanghui.* to 'shanghui'@'%';
刷新數據庫
flush privileges;
mysql普通用戶如果要登錄,可以在mysqlroot里給授權
授予權限要在root用戶里授予
grant 權限 on *.* to '用戶'@'ip';
比如所有庫的查詢權限,就: *.* 代表所有庫下的所有表
grant select on *.* to '用戶'@'ip';
所有權限的話
grant all privileges on *.* to '用戶'@'ip';
賦權限后記得刷新: flush privileges;
%代表所有ip
授權本機
grant all privileges on *.* to 'ly'@'localhost' identified by 'ly123';
授權其他
grant all privileges on *.* to 'ly'@'%' identified by 'ly123';
grant all privileges on *.* to 'ly'@'localhost' identified by '1qaz@WSX';
grant all privileges on *.* to 'ly'@'%' identified by '1qaz@WSX';
設置查看的權限
SELECT、 INSERT、 UPDATE、 DELETE(其他的)
grant select,insert on *.* to 'ly'@'%' identified by '1qaz@WSX';
grant select,insert on *.* to 'ly'@'localhost' identified by '1qaz@WSX';
flush privileges;
授權。不要忘記了本機'localhost'
或者其他機器'%'
授權
就可以登了。。。
查看普通用戶授予的授權
show grants for 用戶名;
show grants for ly;
授予all privileges 或者select 權限的問題
明明給了select 權限,但是確是all privileges權限的問題。
精致boy說: 權限改動以后都會記錄 之前的要手動刪除
我就去搜了撤銷的命令。
撤銷已經賦予mysql用戶權限的權限
revoke 跟 grant 的語法差不多,只需要把關鍵字 “to” 換成 “from” 即可:
revoke all on *.* from dba@localhost;
grant all privileges on *.* to 'ly'@'%' identified by '1qaz@WSX';
revoke all privileges on *.* from 'ly'@'%' identified by '1qaz@WSX';
上面的語句會報錯:(不知道什么原因阿)
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 'identified by '1qaz@WSX'' at line 1;
因為看到這個想起相反的命令(如下)。(試了下果然可以)
revoke ALL PRIVILEGES on *.* from 'ly'@'%' ;
如果先設置了ALL PRIVILEGES權限,就要先移除了這個權限,才可以設置其他的小權限(select, insert....)
ps:USAGE :“無權限”
如果先設置了設置其他的小權限(select, insert....),不需要先移除了這個權限,可直接設置ALL PRIVILEGES權限
mysql 授予用戶只對一個庫的權限
grant select, insert, update, delete on xj4k.* to ly@localhost ;
這個因為是local的所以不起作用吧。應該是@‘%’才對吧。
設置對一個庫的增刪改的命令。
grant select, insert, update, delete on xj4k.* ;
為什么權限有兩行呢?
這樣就可以只對xj4k有權限,對其他的數據庫沒有
這么多數據庫呢👇
抄自:
MySQL 數據庫賦予用戶權限操作表
https://www.cnblogs.com/goodhacker/p/3373213.html
MySQL設置某一用戶只對一個數據庫擁有所有權限
https://blog.csdn.net/weixin_43739146/article/details/102789473
大數據平台上的可以只操作一個我需要的數據庫的表了,清爽。
看root用戶有所有表的權限那么多表,看不過來。
真好。
GRANT SELECT, INSERT, UPDATE, DELETE ON `xj4k`.* TO 'ly'@'%'; #設置了這么多權限,竟然沒法添加表
GRANT all ON `xj4k`.* TO 'ly'@'%'; #all就可以了,缺什么呢?
撤銷權限(復制上面改revoke和from)
revoke SELECT, INSERT, UPDATE, DELETE ON `xj4k`.* from 'ly'@'%'
沒了
用上面那個長的:
grant select, insert, update, delete on xj4k.* to ly @ '%' ;
這個命令為什么行不通啊?哪里寫錯了呀!
主鍵沖突
在數據插入的時候,假設主鍵對應的值已經存在,則插入失敗!這就是主鍵沖突。
https://www.cnblogs.com/luffe/p/7865316.html
當主鍵存在沖突(duplicate key)的時候,可以選擇性的進行處理,即忽略、更新或者替換。
原文摘抄:
1.忽略
insert ignore into table
保持原記錄,忽略新插入的記錄
2.替換
replace into table
替換原記錄,即先刪除原記錄,再插入新的記錄
3. 更新
insert into table value("xx","xx") ON DUPLICATE KEY UPDATE
其實這個是原本需要執行3條SQL語句(SELECT,INSERT,UPDATE),縮減為1條語句即可完成。
即
IF (SELECT * FROM where 存在) {
UPDATE SET WHERE ;
} else {
INSERT INTO;
}
如:
mysql> insert into Table values (1,'xxx','xxx') ON DUPLICATE KEY UPDATE status ='drain';
Query OK, 2 rows affected (0.00 sec)
上面語句偽代碼表示即為
if (select * from table where id=1) {
update device set status ='drain' where id=1
} else {
insert into table value (1,'xxx','xxx')
}
很明顯,id=1 是有的,這樣就執行update操作
mysql> select * from table;
+-------+--------+-----------+
| id| status | spec_char |
+-------+--------+-----------+
| 1 | drain | yangting |
| 2 | dead | zhong |
+-------+--------+-----------+
2 rows in set (0.00 sec)