瀏覽模式: 普通 | 列表
Ubuntu 18.04.1 / Mint 19 下mysql 密碼設定,及可以不加 sudo 登入設定方式

說明:
安裝好Ubuntu 18.04.1 / Mint 19後,不能以使用者身份執行mysql 指令,
必須使用sudo ,才可以執行mysql 指令,而且任何php程式可能無法連線mysql。


解決方式如下:

1.登入mysql介面

sudo mysql -uroot -p
Enter password:【直接按Enter】

2.修改帳密管理方式與變更密碼

use mysql;
update user SET plugin='mysql_native_password' WHERE User='root';
update user set authentication_string=password('root新密碼') where user='root';
flush privileges;
\q

3.登出後,即可以下mysql 指令不用加sudo



SFS3畢業生升學資料中的畢業生名冊沒有人名時的原因
是因為 grad_stud表中,該年度的畢業生student_sn為0值
下面語法,可以解決這個問題。

但如果是有學號重複的情況,可能要再修改一下語法。


UPDATE grad_stud set  grad_stud.student_sn=
(select student_sn from stud_base
where stud_base.stud_id=grad_stud.stud_id )
where grad_stud.stud_grad_year='104'

UPDATE [table_name] SET [column_name] =
(SELECT [column_name] FROM [table_name] WHERE [column_name] = [value])
WHERE [column_name] = [value];

mysqldump 備份時的錯誤 1449

今天在一部新安裝的機器上,將復原良好的學籍系統
作備份,卻無法成功備份。
mysqldump -uroot -p --default-character-set=latin1 sfs3 > sfs30324.sql

mysqldump: Got error: 1449: The user specified as a definer ('sfs3man'@'localhost') does not exist when using LOCK TABLES

原來當初還原資料庫時,是用mysqldump 下來的資料倒回去的。

mysqladmin -uroot -p create sfs3;

mysql -uroot -p  sfs3 < sfs3_bak.sql

而在備份檔案 sfs3_bak.sql 內,有下面的資料。

/*!50013 DEFINER=`sfs3man`@`localhost` SQL SECURITY DEFINER */
/*!50013 DEFINER=`sfs3man`@`localhost` SQL SECURITY DEFINER */
/*!50013 DEFINER=`sfs3man`@`localhost` SQL SECURITY DEFINER */

有的學籍系統並不是用root去連接,而是設一個sfs3man
我們dump 下來時,它也將這個使用者 sfs3man 記錄了。
而還原到新資料庫時,它也將這個記錄記著。
所以您如果沒有用sfs3man,它就不給您dump 這個資料庫了。
就會產生1449的錯誤。
mysqldump: Got error: 1449

其實這是openid 用的那三個表造成的。
teacher_post_view
teacher_course_view
student_view

方式1:較簡單的方式,
就是再建一個sfs3man 的帳號,就可以正常備份了。

grant all privileges on sfs3.* to 'sfs3man'@'localhost' identified by '該帳號密碼';

方式2:砍掉那三個表再去dump
登入到mysql 指令介面,再下刪掉那三個表的指令

DROP VIEW IF EXISTS sfs3.teacher_post_view;
DROP VIEW IF EXISTS sfs3.teacher_course_view;
DROP VIEW IF EXISTS sfs3.student_view;